Skip to content

Commit ec6b4eb

Browse files
committed
Merge pull request livecode#3052 from runrevmark/checks-load_errors
[[ Debugging ]] Added a helper 'checkloadstat()' for fileformat problems
2 parents d30d194 + b4a4a27 commit ec6b4eb

24 files changed

+345
-335
lines changed

engine/src/aclip.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -965,26 +965,26 @@ IO_stat MCAudioClip::load(IO_handle stream, uint32_t version)
965965
IO_stat stat;
966966

967967
if ((stat = MCObject::load(stream, version)) != IO_NORMAL)
968-
return stat;
968+
return checkloadstat(stat);
969969
if ((stat = IO_read_uint4(&size, stream)) != IO_NORMAL)
970-
return stat;
970+
return checkloadstat(stat);
971971
if (size != 0)
972972
{
973973
samples = new int1[size];
974974
if ((stat = IO_read(samples, size, stream)) != IO_NORMAL)
975-
return stat;
975+
return checkloadstat(stat);
976976
}
977977
if ((stat = IO_read_uint2(&format, stream)) != IO_NORMAL)
978-
return stat;
978+
return checkloadstat(stat);
979979
if ((stat = IO_read_uint2(&nchannels, stream)) != IO_NORMAL)
980-
return stat;
980+
return checkloadstat(stat);
981981
if ((stat = IO_read_uint2(&swidth, stream)) != IO_NORMAL)
982-
return stat;
982+
return checkloadstat(stat);
983983
if ((stat = IO_read_uint2(&rate, stream)) != IO_NORMAL)
984-
return stat;
984+
return checkloadstat(stat);
985985
if (flags & F_LOUDNESS)
986986
if ((stat = IO_read_uint2(&loudness, stream)) != IO_NORMAL)
987-
return stat;
987+
return checkloadstat(stat);
988988
return loadpropsets(stream, version);
989989
}
990990

engine/src/block.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ IO_stat MCBlock::load(IO_handle stream, uint32_t version, bool is_ext)
163163
}
164164

165165
if ((stat = IO_read_uint4(&flags, stream)) != IO_NORMAL)
166-
return stat;
166+
return checkloadstat(stat);
167167

168168
// MW-2012-03-04: [[ StackFile5500 ]] If this isn't an extended block, then strip the
169169
// metadata flag.
@@ -184,7 +184,7 @@ IO_stat MCBlock::load(IO_handle stream, uint32_t version, bool is_ext)
184184
{
185185
uint2 t_font_index;
186186
if ((stat = IO_read_uint2(&t_font_index, stream)) != IO_NORMAL)
187-
return stat;
187+
return checkloadstat(stat);
188188

189189
// MW-2012-02-17: [[ LogFonts ]] Map the font index we have to the font attrs.
190190
// Note that we ignore the 'unicode' tag since that is encoded in flags.
@@ -208,11 +208,11 @@ IO_stat MCBlock::load(IO_handle stream, uint32_t version, bool is_ext)
208208
// MW-2013-11-19: [[ UnicodeFileFormat ]] This path only happens sfv < 1300
209209
// so is legacy.
210210
if ((stat = IO_read_nameref_legacy(atts->fontname, stream, false)) != IO_NORMAL)
211-
return stat;
211+
return checkloadstat(stat);
212212
if ((stat = IO_read_uint2(&atts->fontsize, stream)) != IO_NORMAL)
213-
return stat;
213+
return checkloadstat(stat);
214214
if ((stat = IO_read_uint2(&atts->fontstyle, stream)) != IO_NORMAL)
215-
return stat;
215+
return checkloadstat(stat);
216216

217217
// MW-2012-02-17; [[ SplitTextAttrs ]] All the font attrs are set.
218218
flags |= F_FATTR_MASK;
@@ -222,7 +222,7 @@ IO_stat MCBlock::load(IO_handle stream, uint32_t version, bool is_ext)
222222
{
223223
atts->color = new MCColor;
224224
if ((stat = IO_read_mccolor(*atts->color, stream)) != IO_NORMAL)
225-
return stat;
225+
return checkloadstat(stat);
226226
if (flags & F_HAS_COLOR_NAME)
227227
{
228228
// MW-2012-01-06: [[ Block Changes ]] We no longer use the color name
@@ -231,7 +231,7 @@ IO_stat MCBlock::load(IO_handle stream, uint32_t version, bool is_ext)
231231
// so is legacy,
232232
char *colorname;
233233
if ((stat = IO_read_cstring_legacy(colorname, stream, 2)) != IO_NORMAL)
234-
return stat;
234+
return checkloadstat(stat);
235235
delete colorname;
236236
flags &= ~F_HAS_COLOR_NAME;
237237
}
@@ -240,7 +240,7 @@ IO_stat MCBlock::load(IO_handle stream, uint32_t version, bool is_ext)
240240
{
241241
atts->backcolor = new MCColor;
242242
if ((stat = IO_read_mccolor(*atts->backcolor, stream)) != IO_NORMAL)
243-
return stat;
243+
return checkloadstat(stat);
244244
if (version < 2000 || flags & F_HAS_BACK_COLOR_NAME)
245245
{
246246
// MW-2012-01-06: [[ Block Changes ]] We no longer use the backcolor name
@@ -249,30 +249,30 @@ IO_stat MCBlock::load(IO_handle stream, uint32_t version, bool is_ext)
249249
// so is legacy,
250250
char *backcolorname;
251251
if ((stat = IO_read_cstring_legacy(backcolorname, stream, 2)) != IO_NORMAL)
252-
return stat;
252+
return checkloadstat(stat);
253253
delete backcolorname;
254254
flags &= ~F_HAS_BACK_COLOR_NAME;
255255
}
256256
}
257257
if (flags & F_HAS_SHIFT)
258258
if ((stat = IO_read_int2(&atts->shift, stream)) != IO_NORMAL)
259-
return stat;
259+
return checkloadstat(stat);
260260

261261
// MW-2012-05-04: [[ Values ]] linkText / imageSource / metaData are now uniqued
262262
// strings.
263263
if (flags & F_HAS_LINK)
264264
{
265265
// MW-2013-11-19: [[ UnicodeFileFormat ]] If sfv >= 7000, use unicode.
266266
if ((stat = IO_read_stringref_new(atts->linktext, stream, version >= 7000)) != IO_NORMAL)
267-
return stat;
267+
return checkloadstat(stat);
268268
/* UNCHECKED */ MCValueInterAndRelease(atts -> linktext, atts -> linktext);
269269
}
270270

271271
if (flags & F_HAS_IMAGE)
272272
{
273273
// MW-2013-11-19: [[ UnicodeFileFormat ]] If sfv >= 7000, use unicode.
274274
if ((stat = IO_read_stringref_new(atts->imagesource, stream, version >= 7000)) != IO_NORMAL)
275-
return stat;
275+
return checkloadstat(stat);
276276
/* UNCHECKED */ MCValueInterAndRelease(atts -> imagesource, atts -> imagesource);
277277
}
278278

@@ -282,15 +282,15 @@ IO_stat MCBlock::load(IO_handle stream, uint32_t version, bool is_ext)
282282
{
283283
// MW-2013-11-19: [[ UnicodeFileFormat ]] If sfv >= 7000, use unicode.
284284
if ((stat = IO_read_stringref_new(atts->metadata, stream, version >= 7000)) != IO_NORMAL)
285-
return stat;
285+
return checkloadstat(stat);
286286
/* UNCHECKED */ MCValueInterAndRelease(atts -> metadata, atts -> metadata);
287287
}
288288

289289
// MW-2012-03-04: [[ StackFile5500 ]] If this is an extended block, then skip
290290
// to the end of the attrs record.
291291
if (is_ext)
292292
if ((stat = MCS_seek_set(stream, t_attr_end)) != IO_NORMAL)
293-
return stat;
293+
return checkloadstat(stat);
294294

295295
// ***** IMPORTANT *****
296296
// The "index" and "size" values loaded below are byte indices into the
@@ -304,9 +304,9 @@ IO_stat MCBlock::load(IO_handle stream, uint32_t version, bool is_ext)
304304
// the block of the correct offsets as soon as it knows them.
305305
uint2 index, size;
306306
if ((stat = IO_read_uint2(&index, stream)) != IO_NORMAL)
307-
return stat;
307+
return checkloadstat(stat);
308308
if ((stat = IO_read_uint2(&size, stream)) != IO_NORMAL)
309-
return stat;
309+
return checkloadstat(stat);
310310
m_index = index;
311311
m_size = size;
312312

engine/src/button.cpp

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4412,7 +4412,7 @@ IO_stat MCButton::extendedload(MCObjectInputStream& p_stream, uint32_t p_version
44124412
if (p_remaining >= 4)
44134413
{
44144414
uint4 t_hover_icon_id;
4415-
t_stat = p_stream . ReadU32(t_hover_icon_id);
4415+
t_stat = checkloadstat(p_stream . ReadU32(t_hover_icon_id));
44164416
if (t_stat == IO_NORMAL)
44174417
{
44184418
icons = new iconlist;
@@ -4427,22 +4427,22 @@ IO_stat MCButton::extendedload(MCObjectInputStream& p_stream, uint32_t p_version
44274427
if (p_remaining > 0)
44284428
{
44294429
uint4 t_flags, t_length, t_header_length;
4430-
t_stat = p_stream . ReadTag(t_flags, t_length, t_header_length);
4430+
t_stat = checkloadstat(p_stream . ReadTag(t_flags, t_length, t_header_length));
44314431

44324432
if (t_stat == IO_NORMAL)
4433-
t_stat = p_stream . Mark();
4433+
t_stat = checkloadstat(p_stream . Mark());
44344434

44354435
// MW-2014-06-20: [[ IconGravity ]] Read in the iconGravity property.
44364436
if (t_stat == IO_NORMAL && (t_flags & BUTTON_EXTRA_ICONGRAVITY) != 0)
44374437
{
44384438
uint32_t t_value;
4439-
t_stat = p_stream . ReadU32(t_value);
4439+
t_stat = checkloadstat(p_stream . ReadU32(t_value));
44404440
if (t_stat == IO_NORMAL)
44414441
m_icon_gravity = (MCGravity)t_value;
44424442
}
44434443

44444444
if (t_stat == IO_NORMAL)
4445-
t_stat = p_stream . Skip(t_length);
4445+
t_stat = checkloadstat(p_stream . Skip(t_length));
44464446

44474447
if (t_stat == IO_NORMAL)
44484448
p_remaining -= t_length + t_header_length;
@@ -4596,7 +4596,7 @@ IO_stat MCButton::load(IO_handle stream, uint32_t version)
45964596
IO_stat stat;
45974597

45984598
if ((stat = MCControl::load(stream, version)) != IO_NORMAL)
4599-
return stat;
4599+
return checkloadstat(stat);
46004600

46014601
// MW-2012-02-17: [[ IntrinsicUnicode ]] If the unicode tag is set, then we are unicode.
46024602
if ((m_font_flags & FF_HAS_UNICODE_TAG) != 0)
@@ -4607,10 +4607,10 @@ IO_stat MCButton::load(IO_handle stream, uint32_t version)
46074607
uint4 iconid;
46084608
uint4 hiliteiconid = 0;
46094609
if ((stat = IO_read_uint4(&iconid, stream)) != IO_NORMAL)
4610-
return stat;
4610+
return checkloadstat(stat);
46114611
if (flags & F_HAS_ICONS)
46124612
if ((stat = IO_read_uint4(&hiliteiconid, stream)) != IO_NORMAL)
4613-
return stat;
4613+
return checkloadstat(stat);
46144614
if (iconid != 0 || hiliteiconid != 0)
46154615
{
46164616
flags |= F_HAS_ICONS;
@@ -4638,7 +4638,7 @@ IO_stat MCButton::load(IO_handle stream, uint32_t version)
46384638
uint2 i;
46394639
for (i = CI_ARMED ; i < CI_FILE_NICONS ; i++)
46404640
if ((stat = IO_read_uint4(&icons->iconids[i], stream)) != IO_NORMAL)
4641-
return stat;
4641+
return checkloadstat(stat);
46424642
}
46434643

46444644
// MW-2013-11-19: [[ UnicodeFileFormat ]] If sfv >= 7000, use unicode; otherwise use
@@ -4648,29 +4648,29 @@ IO_stat MCButton::load(IO_handle stream, uint32_t version)
46484648
if (version < 7000)
46494649
{
46504650
if ((stat = IO_read_stringref_legacy(label, stream, hasunicode())) != IO_NORMAL)
4651-
return stat;
4651+
return checkloadstat(stat);
46524652
}
46534653
else
46544654
{
46554655
if ((stat = IO_read_stringref_new(label, stream, true)) != IO_NORMAL)
4656-
return stat;
4656+
return checkloadstat(stat);
46574657
}
46584658
}
46594659

46604660
if (flags & F_LABEL_WIDTH)
46614661
if ((stat = IO_read_uint2(&labelwidth, stream)) != IO_NORMAL)
4662-
return stat;
4662+
return checkloadstat(stat);
46634663

46644664
if (!(flags & F_NO_MARGINS))
46654665
{
46664666
if ((stat = IO_read_int2(&leftmargin, stream)) != IO_NORMAL)
4667-
return stat;
4667+
return checkloadstat(stat);
46684668
if ((stat = IO_read_int2(&rightmargin, stream)) != IO_NORMAL)
4669-
return stat;
4669+
return checkloadstat(stat);
46704670
if ((stat = IO_read_int2(&topmargin, stream)) != IO_NORMAL)
4671-
return stat;
4671+
return checkloadstat(stat);
46724672
if ((stat = IO_read_int2(&bottommargin, stream)) != IO_NORMAL)
4673-
return stat;
4673+
return checkloadstat(stat);
46744674
if (leftmargin == defaultmargin
46754675
&& leftmargin == rightmargin
46764676
&& leftmargin == topmargin
@@ -4680,7 +4680,7 @@ IO_stat MCButton::load(IO_handle stream, uint32_t version)
46804680

46814681
// MW-2013-11-19: [[ UnicodeFileFormat ]] If sfv >= 7000, use unicode.
46824682
if ((stat = IO_read_nameref_new(menuname, stream, version >= 7000)) != IO_NORMAL)
4683-
return stat;
4683+
return checkloadstat(stat);
46844684

46854685
// MW-2013-11-19: [[ UnicodeFileFormat ]] If sfv >= 7000, use unicode; otherwise use
46864686
// legacy unicode output.
@@ -4689,51 +4689,51 @@ IO_stat MCButton::load(IO_handle stream, uint32_t version)
46894689
if (version < 7000)
46904690
{
46914691
if ((stat = IO_read_stringref_legacy(menustring, stream, hasunicode())) != IO_NORMAL)
4692-
return stat;
4692+
return checkloadstat(stat);
46934693
}
46944694
else
46954695
{
46964696
if ((stat = IO_read_stringref_new(menustring, stream, true)) != IO_NORMAL)
4697-
return stat;
4697+
return checkloadstat(stat);
46984698
}
46994699
}
47004700

47014701
if ((stat = IO_read_uint1(&menubutton, stream)) != IO_NORMAL)
4702-
return stat;
4702+
return checkloadstat(stat);
47034703
family = menubutton >> 4;
47044704
menubutton &= 0x0F;
47054705

47064706
if ((stat = IO_read_uint1(&menumode, stream)) != IO_NORMAL)
4707-
return stat;
4707+
return checkloadstat(stat);
47084708

47094709
if (menumode > WM_MODAL)
47104710
menumode++;
47114711
if ((menumode == WM_OPTION || menumode == WM_TOP_LEVEL)
47124712
&& (!MCNameIsEmpty(menuname) || flags & F_MENU_STRING))
47134713
if ((stat = IO_read_uint2(&menuhistory, stream)) != IO_NORMAL)
4714-
return stat;
4714+
return checkloadstat(stat);
47154715

47164716
if (flags & F_MENU_LINES)
47174717
if ((stat = IO_read_uint2(&menulines, stream)) != IO_NORMAL)
4718-
return stat;
4718+
return checkloadstat(stat);
47194719

47204720
// MW-2013-11-19: [[ UnicodeFileFormat ]] If sfv >= 7000, use unicode; otherwise use
47214721
// legacy unicode output.
47224722
if (version < 7000)
47234723
{
47244724
if ((stat = IO_read_stringref_legacy(acceltext, stream, hasunicode())) != IO_NORMAL)
4725-
return stat;
4725+
return checkloadstat(stat);
47264726
}
47274727
else
47284728
{
47294729
if ((stat = IO_read_stringref_new(acceltext, stream, true)) != IO_NORMAL)
4730-
return stat;
4730+
return checkloadstat(stat);
47314731
}
47324732

47334733
uint4 tacceltextsize;
47344734

47354735
if ((stat = IO_read_uint2(&accelkey, stream)) != IO_NORMAL)
4736-
return stat;
4736+
return checkloadstat(stat);
47374737
if (accelkey < 256)
47384738
#ifdef __MACROMAN__
47394739
accelkey = MCisotranslations[accelkey];
@@ -4742,9 +4742,9 @@ IO_stat MCButton::load(IO_handle stream, uint32_t version)
47424742
#endif
47434743

47444744
if ((stat = IO_read_uint1(&accelmods, stream)) != IO_NORMAL)
4745-
return stat;
4745+
return checkloadstat(stat);
47464746
if ((stat = IO_read_uint1(&mnemonic, stream)) != IO_NORMAL)
4747-
return stat;
4747+
return checkloadstat(stat);
47484748
if (version <= 2000)
47494749
{
47504750
if (flags & F_DEFAULT)
@@ -4763,20 +4763,20 @@ IO_stat MCButton::load(IO_handle stream, uint32_t version)
47634763
}
47644764

47654765
if ((stat = loadpropsets(stream, version)) != IO_NORMAL)
4766-
return stat;
4766+
return checkloadstat(stat);
47674767

47684768
while (True)
47694769
{
47704770
uint1 type;
47714771
if ((stat = IO_read_uint1(&type, stream)) != IO_NORMAL)
4772-
return stat;
4772+
return checkloadstat(stat);
47734773
if (type == OT_BDATA)
47744774
{
47754775
MCCdata *newbdata = new MCCdata;
47764776
if ((stat = newbdata->load(stream, this, version)) != IO_NORMAL)
47774777
{
47784778
delete newbdata;
4779-
return stat;
4779+
return checkloadstat(stat);
47804780
}
47814781
newbdata->appendto(bdata);
47824782
}

0 commit comments

Comments
 (0)