Huw Davies (@huw) commented about dlls/nsi/nsi.c:
data[2], sizes[2], data[3], sizes[3], &num ); if (err != ERROR_MORE_DATA) break; TRACE( "Short buffer, attempt %d.\n", attempt );
err = NsiEnumerateObjectsAllParameters( unk, 0, module, table, NULL, 0, NULL, 0, NULL, 0, NULL, 0, &num );
if (err) goto err; NsiFreeTable( data[0], data[1], data[2], data[3] ); memset( data, 0, sizeof(data) );
err = NsiEnumerateObjectsAllParameters( unk, 0, module, table, NULL, 0, NULL, 0, NULL, 0, NULL, 0, &num );
if (err) return err;
err = ERROR_OUTOFMEMORY; /* fail if this is the last attempt */
I'd prefer to keep this patch simpler by just adding ```c err = ERROR_OUTOFMEMORY; ``` to the end of the for loop body.