]> granicus.if.org Git - curl/commitdiff
Made the complaint on free-twice errors a lot better
authorDaniel Stenberg <daniel@haxx.se>
Fri, 19 Jan 2001 12:20:30 +0000 (12:20 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 19 Jan 2001 12:20:30 +0000 (12:20 +0000)
memanalyze.pl

index aa6db4c81e46453542ec448f8d647432f1e90401..86c967c8c0987d17068d73152b8fb009b3d6eb4b 100755 (executable)
@@ -26,13 +26,17 @@ while(<STDIN>) {
 
         if($function =~ /free\(0x([0-9a-f]*)/) {
             $addr = $1;
-            if($sizeataddr{$addr} <= 0) {
+            if($sizeataddr{$addr} == 0) {
                 print "FREE ERROR: No memory allocated: $line\n";
             }
+            elsif(-1 == $sizeataddr{$addr}) {
+                print "FREE ERROR: Memory freed twice: $line\n";
+                print "FREE ERROR: Previously freed at: ".$getmem{$addr}."\n";
+            }
             else {
                 $totalmem -= $sizeataddr{$addr};
-                $sizeataddr{$addr}=0;
-                $getmem{$addr}=""; # forget after a good free()
+                $sizeataddr{$addr}=-1; # set -1 to mark as freed
+                $getmem{$addr}="$source:$linenum";
             }
         }
         elsif($function =~ /malloc\((\d*)\) = 0x([0-9a-f]*)/) {