]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Committed Jeremy F's patch 86:
authorNicholas Nethercote <njn@valgrind.org>
Mon, 17 Feb 2003 10:09:19 +0000 (10:09 +0000)
committerNicholas Nethercote <njn@valgrind.org>
Mon, 17 Feb 2003 10:09:19 +0000 (10:09 +0000)
  Fix a bug introduced in err_extra changes; not all errors have an 'extra'.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1420

addrcheck/ac_main.c
memcheck/mc_errcontext.c

index 869d6e4b3d5fe0b5c7716244551253daa76b9ba1..1bd842e3b7d58653c1c1cd42817dc4e415a00de6 100644 (file)
@@ -183,13 +183,18 @@ static void describe_addr ( Addr a, AddrInfo* ai )
    necessary, and returns the copy. */
 void* SK_(dup_extra_and_update)(Error* err)
 {
-   MemCheckError* new_extra;
+   MemCheckError* extra;
+   MemCheckError* new_extra = NULL;
+
+   extra = ((MemCheckError*)VG_(get_error_extra)(err));
+   if (extra != NULL) {
+      new_extra  = VG_(malloc)(sizeof(MemCheckError));
+      *new_extra = *extra;
+      if (new_extra->addrinfo.akind == Undescribed)
+         describe_addr ( VG_(get_error_address)(err), &(new_extra->addrinfo) );
+   }
 
-   new_extra  = VG_(malloc)(sizeof(MemCheckError));
-   *new_extra = *((MemCheckError*)VG_(get_error_extra)(err));
 
-   if (new_extra->addrinfo.akind == Undescribed)
-      describe_addr ( VG_(get_error_address)(err), &(new_extra->addrinfo) );
 
    return new_extra;
 }
index 50556990395cd6b12d6e05a945c4060d8a1a5e12..cb757c7c81c07a51db1a9654228fecc5dd8aff97 100644 (file)
@@ -197,13 +197,17 @@ static void mc_describe_addr ( Addr a, AddrInfo* ai )
    necessary, and returns the copy. */
 void* SK_(dup_extra_and_update)( Error* err )
 {
-   MemCheckError* new_extra;
-
-   new_extra  = VG_(malloc)(sizeof(MemCheckError));
-   *new_extra = *((MemCheckError*)VG_(get_error_extra)(err));
-
-   if (new_extra->addrinfo.akind == Undescribed)
-      mc_describe_addr ( VG_(get_error_address)(err), &(new_extra->addrinfo) );
+   MemCheckError* extra;
+   MemCheckError* new_extra = NULL;
+
+   extra = ((MemCheckError*)VG_(get_error_extra)(err));
+   if (extra != NULL) {
+      new_extra  = VG_(malloc)(sizeof(MemCheckError));
+      *new_extra = *extra;
+      if (new_extra->addrinfo.akind == Undescribed)
+         mc_describe_addr ( VG_(get_error_address)(err),
+                            &(new_extra->addrinfo) );
+   }
 
    return new_extra;
 }