]> rtime.felk.cvut.cz Git - coffee/mt-apps.git/commitdiff
free line on error
authorJiří Matěják <jiri.matejak@fel.cvut.cz>
Fri, 18 May 2018 08:56:00 +0000 (10:56 +0200)
committerJiří Matěják <jiri.matejak@fel.cvut.cz>
Fri, 18 May 2018 08:56:00 +0000 (10:56 +0200)
mt_server.c

index dc70aab33fd6d65e5e2ab271c7409b7d25e300a9..fa099bbd59e90d0f4630f6ad34b6214a2c976532 100644 (file)
@@ -198,6 +198,8 @@ static int callback_merica_terminal(struct lws *wsi,
                     if (list_add(lines, line) == 0) {
                         lws_callback_on_writable_all_protocol(lws_get_context(wsi),
                             &protocols[PROTOCOL_MERICA_TERMINAL]);
+                    } else {
+                        free_line(line);
                     }
                 }
             } else if (strcmp((const char *)in, "close") == 0) {
@@ -225,15 +227,16 @@ static void fd_cb(EV_P_ ev_io *w_, int revents)
 
     if (*pos == '\n' || (w->pos - w->text) == INPUT_LINE_LENGTH) {
         *pos = 0;
-        if (list_add(w->lines, w->text) == 0) {
-            char *line = new_line();
-            if (line) {
+        char *line = new_line();
+        if (line) {
+            if (list_add(w->lines, w->text) == 0) {
                 w->text = line;
                 w->pos = w->text;
                 lws_callback_on_writable_all_protocol(w->context,
                     &protocols[PROTOCOL_MERICA_TERMINAL]);
                 return;
             }
+            free_line(line);
         }
         fprintf(stderr, "cannot malloc new line\n");
     }