On Thursday 26 June 2008 16:17, Pascal Bellard wrote: > unlzma: memory leak > http://hg.slitaz.org/wok/raw-file/be0892d9efd5/busybox/stuff/busybox-1.11.0-unlzma.u
Good catch. @@ -491,10 +491,14 @@ if (full_write(dst_fd, buffer, buffer_pos) != (ssize_t)buffer_pos) { bad: - rc_free(rc); - return -1; + len = -1; + } + else { + USE_DESKTOP(total_written += buffer_pos;) + len = USE_DESKTOP(total_written) + 0; The only problem here is that len is "int", whereas total_written is "llong". } rc_free(rc); - USE_DESKTOP(total_written += buffer_pos;) - return USE_DESKTOP(total_written) + 0; + rc_free(buffer); + rc_free(p); + return len; } Oh, and we also leak buffer! :( I propose the following: { USE_DESKTOP(total_written += buffer_pos;) SKIP_DESKTOP(int total_written = 0; /* success */) if (full_write(dst_fd, buffer, buffer_pos) != (ssize_t)buffer_pos) { bad: total_written = -1; /* failure */ } rc_free(rc); free(p); free(buffer); return total_written; } } -- vda _______________________________________________ busybox mailing list busybox@busybox.net http://busybox.net/cgi-bin/mailman/listinfo/busybox