From 1/5:
``` + if (!(instance_id = malloc((len - 4 + 1) * sizeof(*instance_id)))) + { + SetLastError(ERROR_NOT_ENOUGH_MEMORY); + goto done; + } ```
That's not going to do the right thing anymore; the "done" label now overwrites the last error (I'm not quite sure why, since it should only need to be set in one case).
``` + ret = TRUE; + break; ```
Bikeshedding, but that's exactly as many lines as "free(instance_id); return TRUE;"...