From: <ag...@us...> - 2013-02-21 10:01:40
|
Revision: 2615 http://nagios.svn.sourceforge.net/nagios/?rev=2615&view=rev Author: ageric Date: 2013-02-21 10:01:31 +0000 (Thu, 21 Feb 2013) Log Message: ----------- lib/dkhash: *really* fix memory leak and possible loss of objects The previous fixes to dkhash_remove() were mangled beyond usefulness from the original patch by yours truly. This additional patch fixes it while retaining the nagios codestyle intact. Mea culpa. Signed-off-by: Andreas Ericsson <ae...@op...> Modified Paths: -------------- nagioscore/trunk/lib/dkhash.c nagioscore/trunk/lib/test-dkhash.c Modified: nagioscore/trunk/lib/dkhash.c =================================================================== --- nagioscore/trunk/lib/dkhash.c 2013-02-20 20:26:08 UTC (rev 2614) +++ nagioscore/trunk/lib/dkhash.c 2013-02-21 10:01:31 UTC (rev 2615) @@ -207,8 +207,7 @@ if (!(bkt = t->buckets[slot])) return NULL; - prev = bkt; /* pay attention */ - for (; bkt; bkt = bkt->next) { + for (prev = bkt; bkt; prev = bkt, bkt = bkt->next) { if (strcmp(k1, bkt->key)) continue; if ((!k2 && !bkt->key2) || !strcmp(k2, bkt->key2)) { @@ -223,7 +222,6 @@ t->removed++; return dkhash_destroy_bucket(bkt); } - prev = bkt; } return NULL; Modified: nagioscore/trunk/lib/test-dkhash.c =================================================================== --- nagioscore/trunk/lib/test-dkhash.c 2013-02-20 20:26:08 UTC (rev 2614) +++ nagioscore/trunk/lib/test-dkhash.c 2013-02-21 10:01:31 UTC (rev 2615) @@ -87,7 +87,7 @@ int main(int argc, char **argv) { dkhash_table *tx, *t; - unsigned int x; + int x; struct test_data s; char *p1, *p2; char *strs[10]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |