groff-commit
[Top][All Lists]
Advanced

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

[Groff-commit] groff ChangeLog src/roff/troff/env.cpp src/roff...


From: Werner LEMBERG
Subject: [Groff-commit] groff ChangeLog src/roff/troff/env.cpp src/roff...
Date: Tue, 24 Nov 2009 13:32:18 +0000

CVSROOT:        /cvsroot/groff
Module name:    groff
Changes by:     Werner LEMBERG <wl>     09/11/24 13:32:18

Modified files:
        .              : ChangeLog 
        src/roff/troff : env.cpp input.cpp mtsm.cpp 

Log message:
        Fix double frees and memory leaks.
        
        * src/roff/troff/env.cpp (environment::make_tag): Use local object.
        * src/roff/troff/input.cpp (input_stack::check_end_diversion): Free
        `diversion_state' here.
        (interpolate_arg): Fix memory leaks.
        * src/roff/troff/mtsm.cpp (mtsm::pop_state): Don't free `sp->state'.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/groff/ChangeLog?cvsroot=groff&r1=1.1215&r2=1.1216
http://cvs.savannah.gnu.org/viewcvs/groff/src/roff/troff/env.cpp?cvsroot=groff&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/groff/src/roff/troff/input.cpp?cvsroot=groff&r1=1.60&r2=1.61
http://cvs.savannah.gnu.org/viewcvs/groff/src/roff/troff/mtsm.cpp?cvsroot=groff&r1=1.6&r2=1.7

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/groff/groff/ChangeLog,v
retrieving revision 1.1215
retrieving revision 1.1216
diff -u -b -r1.1215 -r1.1216
--- ChangeLog   20 Nov 2009 05:10:17 -0000      1.1215
+++ ChangeLog   24 Nov 2009 13:32:17 -0000      1.1216
@@ -1,3 +1,13 @@
+2009-11-24  Maurice van der Pot  <address@hidden>
+
+       Fix double frees and memory leaks.
+
+       * src/roff/troff/env.cpp (environment::make_tag): Use local object.
+       * src/roff/troff/input.cpp (input_stack::check_end_diversion): Free
+       `diversion_state' here.
+       (interpolate_arg): Fix memory leaks.
+       * src/roff/troff/mtsm.cpp (mtsm::pop_state): Don't free `sp->state'.
+
 2009-11-20  Paulo Ricardo Zanoni  <address@hidden>
 
        * */*.cpp: Replace `printf(string);' with `printf("%s", string);'.

Index: src/roff/troff/env.cpp
===================================================================
RCS file: /cvsroot/groff/groff/src/roff/troff/env.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- src/roff/troff/env.cpp      5 Jan 2009 20:11:12 -0000       1.22
+++ src/roff/troff/env.cpp      24 Nov 2009 13:32:18 -0000      1.23
@@ -2213,14 +2213,15 @@
      */
     if (curdiv == topdiv && topdiv->before_first_page)
       topdiv->begin_page();
-    macro *m = new macro;
-    m->append_str("devtag:");
+
+    macro m;
+    m.append_str("devtag:");
     for (const char *p = nm; *p; p++)
       if (!invalid_input_char((unsigned char)*p))
-       m->append(*p);
-    m->append(' ');
-    m->append_int(i);
-    return new special_node(*m);
+       m.append(*p);
+    m.append(' ');
+    m.append_int(i);
+    return new special_node(m);
   }
   return 0;
 }

Index: src/roff/troff/input.cpp
===================================================================
RCS file: /cvsroot/groff/groff/src/roff/troff/input.cpp,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -b -r1.60 -r1.61
--- src/roff/troff/input.cpp    7 May 2009 16:22:17 -0000       1.60
+++ src/roff/troff/input.cpp    24 Nov 2009 13:32:18 -0000      1.61
@@ -531,6 +531,8 @@
 {
   if (t->is_diversion) {
     div_level--;
+    if (diversion_state)
+      delete diversion_state;
     diversion_state = t->diversion_state;
   }
 }
@@ -4398,6 +4400,7 @@
          args += c;
       if (i != limit)
        args += ' ';
+      delete p;
     }
     if (limit > 0) {
       args += '\0';
@@ -4419,6 +4422,7 @@
       args += '"';
       if (i != limit)
        args += ' ';
+      delete p;
     }
     if (limit > 0) {
       args += '\0';
@@ -4438,6 +4442,7 @@
       }
       if (input_stack::space_follows_arg(i))
        args += ' ';
+      delete p;
     }
     if (limit > 0) {
       args += '\0';

Index: src/roff/troff/mtsm.cpp
===================================================================
RCS file: /cvsroot/groff/groff/src/roff/troff/mtsm.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- src/roff/troff/mtsm.cpp     5 Jan 2009 20:11:12 -0000       1.6
+++ src/roff/troff/mtsm.cpp     24 Nov 2009 13:32:18 -0000      1.7
@@ -390,8 +390,6 @@
 #endif
     if (sp == 0)
       fatal("empty state machine stack");
-    if (sp->state)
-      delete sp->state;
     sp->state = 0;
     stack *t = sp;
     sp = sp->next;




reply via email to

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