Hans Leidekker (@hans) commented about dlls/rometadata/assembly.c:
break;
}
}
if (FAILED(hr)) return hr;
/* The stream name is padded to the next 4-byte boundary (ECMA-335 Partition II.24.2.2) */
streams_cur += offsetof(struct stream_hdr, name[(streams[j].name_len + 4) & ~3]);
- }
- if (assembly->stream_strings.size)
- {
/* IMetaDataTables::GetStringHeapSize returns the string heap size without the nul byte padding. */
const BYTE *ptr = assembly->stream_strings.start + assembly->stream_strings.size - 1;
ULONG padding;
for (padding = 0; !ptr[0] && !ptr[-1]; ptr--, padding++) /* nothing */;
assembly->stream_strings.size -= padding;
What if assembly->stream_strings.size == 1? This could be written without the padding variable.