mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 09:58:01 +00:00
Thanks to Hans-Juergen Petrich for spotting this tiny memory leak:
`otherbuf' should still be freed even if the RegEnumKey function that was supposed to fill it with data failed. While I'm at it, also remove the redundant check for its non-NULL-ness (what's the point of having a malloc wrapper that dies rather than return NULL if you then waste effort checking its return value for NULL _anyway_, eh?). [originally from svn r2217]
This commit is contained in:
parent
9902bc67fc
commit
c206f0d8e5
@ -198,14 +198,14 @@ char *enum_settings_next(void *handle, char *buffer, int buflen)
|
|||||||
struct enumsettings *e = (struct enumsettings *) handle;
|
struct enumsettings *e = (struct enumsettings *) handle;
|
||||||
char *otherbuf;
|
char *otherbuf;
|
||||||
otherbuf = smalloc(3 * buflen);
|
otherbuf = smalloc(3 * buflen);
|
||||||
if (otherbuf && RegEnumKey(e->key, e->i++, otherbuf,
|
if (RegEnumKey(e->key, e->i++, otherbuf, 3 * buflen) == ERROR_SUCCESS) {
|
||||||
3 * buflen) == ERROR_SUCCESS) {
|
|
||||||
unmungestr(otherbuf, buffer, buflen);
|
unmungestr(otherbuf, buffer, buflen);
|
||||||
sfree(otherbuf);
|
sfree(otherbuf);
|
||||||
return buffer;
|
return buffer;
|
||||||
} else
|
} else {
|
||||||
|
sfree(otherbuf);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void enum_settings_finish(void *handle)
|
void enum_settings_finish(void *handle)
|
||||||
|
Loading…
Reference in New Issue
Block a user