]> granicus.if.org Git - gc/commitdiff
Change backtrace-specific code to comply with C++11 standard
authorIvan Maidanski <ivmai@mail.ru>
Fri, 2 Mar 2018 09:03:01 +0000 (12:03 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Fri, 2 Mar 2018 10:29:56 +0000 (13:29 +0300)
Issue #206 (bdwgc).

* dbg_mlc.c (GC_get_back_ptr_info): Cast GC_REVEAL_POINTER() result
to ptr_t (when assigned to bp local variable).
* dbg_mlc.c (GC_generate_random_valid_address): Cast result of
GC_generate_random_heap_address() to ptr_t.
* dbg_mlc.c (GC_print_backtrace): Cast GC_print_heap_obj() argument
to ptr_t.

dbg_mlc.c

index e9c1df550fb69070e0b9b06001178bd6c999ee73..492a3d4c5e3625efef3eeb081f5e63bd916d1f2e 100644 (file)
--- a/dbg_mlc.c
+++ b/dbg_mlc.c
       if (!hdr) ABORT("Invalid GC_get_back_ptr_info argument");
 #   endif
     if (!GC_HAS_DEBUG_INFO((ptr_t) hdr)) return GC_NO_SPACE;
-    bp = GC_REVEAL_POINTER(hdr -> oh_back_ptr);
+    bp = (ptr_t)GC_REVEAL_POINTER(hdr -> oh_back_ptr);
     if (MARKED_FOR_FINALIZATION == bp) return GC_FINALIZER_REFD;
     if (MARKED_FROM_REGISTER == bp) return GC_REFD_FROM_REG;
     if (NOT_MARKED == bp) return GC_UNREFERENCED;
     ptr_t result;
     ptr_t base;
     do {
-      result = GC_generate_random_heap_address();
+      result = (ptr_t)GC_generate_random_heap_address();
       base = (ptr_t)GC_base(result);
     } while (NULL == base || !GC_is_marked(base));
     return result;
     size_t offset;
     void *base;
 
-    GC_print_heap_obj(GC_base(current));
+    GC_print_heap_obj((ptr_t)GC_base(current));
 
     for (i = 0; ; ++i) {
       source = GC_get_back_ptr_info(current, &base, &offset);
         case GC_REFD_FROM_HEAP:
           GC_err_printf("offset %ld in object:\n", (long)offset);
           /* Take GC_base(base) to get real base, i.e. header. */
-          GC_print_heap_obj(GC_base(base));
+          GC_print_heap_obj((ptr_t)GC_base(base));
           break;
         default:
           GC_err_printf("INTERNAL ERROR: UNEXPECTED SOURCE!!!!\n");