groff-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[groff] 02/02: * src/libs/libgroff/new.cpp: Fix compiler warning.


From: G. Branden Robinson
Subject: [groff] 02/02: * src/libs/libgroff/new.cpp: Fix compiler warning.
Date: Wed, 15 Nov 2017 22:03:29 -0500 (EST)

gbranden pushed a commit to branch master
in repository groff.

commit c0d8b9e264bc2657fbf78f1c7855fc1be534b265
Author: G. Branden Robinson <address@hidden>
Date:   Wed Nov 15 22:02:08 2017 -0500

    * src/libs/libgroff/new.cpp: Fix compiler warning.
    
    Define sized version of overloaded delete operator.  Duplicate code from
    unsized delete operator because simply calling through to it provokes
    another warning, -Wdelete-incomplete.
    
    Fix rest of https://savannah.gnu.org/bugs/?52335.
    
    Signed-off-by: G. Branden Robinson <address@hidden>
---
 ChangeLog                 | 10 ++++++++++
 src/libs/libgroff/new.cpp | 19 +++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 87e6eea..e1d26f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2017-11-15  G. Branden Robinson <address@hidden>
+
+       * src/libs/libgroff/new.cpp: Quieten compiler warning.
+
+       Define sized version of overloaded delete operator.  Duplicate
+       code from unsized delete operator because simply calling through
+       to it provokes another warning, -Wdelete-incomplete.
+
+       Fix rest of https://savannah.gnu.org/bugs/?52335.
+
 2017-11-12  Deri James  <address@hidden>
 
        Better handle glyphs in font positions > 255
diff --git a/src/libs/libgroff/new.cpp b/src/libs/libgroff/new.cpp
index 7a1a473..dc2580f 100644
--- a/src/libs/libgroff/new.cpp
+++ b/src/libs/libgroff/new.cpp
@@ -67,3 +67,22 @@ void operator delete(void *p)
     free(p);
 #endif /* COOKIE_BUG */
 }
+
+void operator delete(void *p,
+                    __attribute__((__unused__)) long unsigned int size)
+{
+  // It's ugly to duplicate the code from delete(void *) above, but if
+  // we don't, g++ 6.3 can't figure out we're calling through it to
+  // free().
+  //
+  // In function 'void operator delete(void*, long unsigned int)':
+  //   warning: deleting 'void*' is undefined [-Wdelete-incomplete]
+  //delete p;
+#ifdef COOKIE_BUG
+  if (p)
+    free((void *)((char *)p - 8));
+#else
+  if (p)
+    free(p);
+#endif /* COOKIE_BUG */
+}



reply via email to

[Prev in Thread] Current Thread [Next in Thread]