diff --git a/src/lib/commands/xdump.c b/src/lib/commands/xdump.c index 2e1f11ba..e778e048 100644 --- a/src/lib/commands/xdump.c +++ b/src/lib/commands/xdump.c @@ -329,7 +329,7 @@ xdprval(struct valstr *val, char *sep) static void xdflds(struct castr ca[], void *ptr) { - int i, j; + int i, j, n; struct valstr val; char *sep = ""; @@ -338,11 +338,12 @@ xdflds(struct castr ca[], void *ptr) continue; if (ca[i].ca_flags & NSC_EXTRA) continue; + n = ca[i].ca_type != NSC_STRINGY ? ca[i].ca_len : 0; j = 0; do { xdeval(&val, ca[i].ca_type, ptr, ca[i].ca_off, j); sep = xdprval(&val, sep); - } while (++j < ca[i].ca_len); + } while (++j < n); } } @@ -359,7 +360,7 @@ xdfldnam(struct castr ca[]) if (ca[i].ca_flags & NSC_EXTRA) continue; pr("%s%s", sep, ca[i].ca_name); - if (ca[i].ca_len) + if (ca[i].ca_len && ca[i].ca_type != NSC_STRINGY) pr(" %d", ca[i].ca_len); sep = " "; } diff --git a/src/lib/global/nsc.c b/src/lib/global/nsc.c index 288cf906..6fcfabde 100644 --- a/src/lib/global/nsc.c +++ b/src/lib/global/nsc.c @@ -143,7 +143,7 @@ struct castr ship_ca[] = { {NSC_TIME, 0, 0, fldoff(shpstr, shp_access), "access"}, {NSC_TIME, 0, 0, fldoff(shpstr, shp_timestamp), "timestamp"}, /* FIXME sail stuff missing */ - {NSC_STRINGY, 0, 0, fldoff(shpstr, shp_name), "name"}, + {NSC_STRINGY, 0, MAXSHPNAMLEN, fldoff(shpstr, shp_name), "name"}, {NSC_UCHAR, 0, 0, fldoff(shpstr, shp_fuel), "fuel"}, {NSC_UCHAR, 0, 0, fldoff(shpstr, shp_nchoppers), "nchoppers"}, {NSC_UCHAR, 0, 0, fldoff(shpstr, shp_nxlight), "nxlight"},