OSDN Git Service

tools/btgatt-client: Fix memory leak
authorAndrei Emeltchenko <andrei.emeltchenko@intel.com>
Tue, 16 Sep 2014 14:03:50 +0000 (17:03 +0300)
committerJohan Hedberg <johan.hedberg@intel.com>
Tue, 16 Sep 2014 19:16:32 +0000 (22:16 +0300)
Simplify code and fix memory leaks

tools/btgatt-client.c

index f628bbb..41b85ad 100644 (file)
@@ -539,8 +539,7 @@ static void cmd_write_value(struct client *cli, char *cmd_str)
                        if (strlen(argv[i]) != 2) {
                                printf("Invalid value byte: %s\n",
                                                                argv[i]);
-                               free(value);
-                               return;
+                               goto done;
                        }
 
                        value[i-1] = strtol(argv[i], &endptr, 16);
@@ -548,8 +547,7 @@ static void cmd_write_value(struct client *cli, char *cmd_str)
                                                        || errno == ERANGE) {
                                printf("Invalid value byte: %s\n",
                                                                argv[i]);
-                               free(value);
-                               return;
+                               goto done;
                        }
                }
        }
@@ -559,11 +557,11 @@ static void cmd_write_value(struct client *cli, char *cmd_str)
                                                        false, value, length)) {
                        printf("Failed to initiate write without response "
                                                                "procedure\n");
-                       return;
+                       goto done;
                }
 
                printf("Write command sent\n");
-               return;
+               goto done;
        }
 
        if (!bt_gatt_client_write_value(cli->gatt, handle, value, length,
@@ -571,6 +569,7 @@ static void cmd_write_value(struct client *cli, char *cmd_str)
                                                                NULL, NULL))
                printf("Failed to initiate write procedure\n");
 
+done:
        free(value);
 }