]> Savannah Git Hosting - gnulib.git/commitdiff
readline: fix memory leak in replacement readline.
authorNick Bowler <nbowler@draconx.ca>
Wed, 31 May 2023 01:26:19 +0000 (21:26 -0400)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 31 May 2023 03:00:52 +0000 (20:00 -0700)
* lib/readline.c (readline): Free memory after getline failure.
Copyright-paperwork-exempt: true

ChangeLog
lib/readline.c

index cd427e981908a3ae217b1a105b60d827a646903e..474c899b2351c8b660c9a0fb3366fecb9116d666 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2023-05-30  Nick Bowler  <nbowler@draconx.ca>
+
+       readline: fix memory leak in replacement readline.
+       * lib/readline.c (readline): Free memory after getline failure.
+       Copyright-paperwork-exempt: true
+
 2023-05-30  Paul Eggert  <eggert@cs.ucla.edu>
 
        error: don’t call ‘exit’
index 8e24090c46adfe9957328a6b4a32ec1bcdb458b6..c307953266b6c47198ac76887f7855cc7d5618e8 100644 (file)
@@ -30,6 +30,7 @@
 #include "readline.h"
 
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 
 char *
@@ -45,7 +46,10 @@ readline (const char *prompt)
     }
 
   if (getline (&out, &size, stdin) < 0)
-    return NULL;
+    {
+      free (out);
+      return NULL;
+    }
 
   while (*out && (out[strlen (out) - 1] == '\r'
                   || out[strlen (out) - 1] == '\n'))