mirror of
https://github.com/pevans/erc-c.git
synced 2025-08-15 18:27:37 +00:00
Use another pointer to retain the original address to free
This also resolves an issue where we weren't attempting to free the duplicated string when returning early.
This commit is contained in:
@@ -199,17 +199,18 @@ vm_debug_prompt()
|
|||||||
void
|
void
|
||||||
vm_debug_execute(const char *str)
|
vm_debug_execute(const char *str)
|
||||||
{
|
{
|
||||||
char *tok, *ebuf;
|
char *tok, *ebuf, *orig;
|
||||||
vm_debug_cmd *cmd;
|
vm_debug_cmd *cmd;
|
||||||
vm_debug_args args;
|
vm_debug_args args;
|
||||||
|
|
||||||
ebuf = strdup(str);
|
orig = ebuf = strdup(str);
|
||||||
cmd = NULL;
|
cmd = NULL;
|
||||||
|
|
||||||
tok = vm_debug_next_arg(&ebuf);
|
tok = vm_debug_next_arg(&ebuf);
|
||||||
|
|
||||||
// No input
|
// No input
|
||||||
if (tok == NULL) {
|
if (tok == NULL) {
|
||||||
|
free(orig);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,6 +218,7 @@ vm_debug_execute(const char *str)
|
|||||||
|
|
||||||
// No command found
|
// No command found
|
||||||
if (cmd == NULL) {
|
if (cmd == NULL) {
|
||||||
|
free(orig);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -236,6 +238,7 @@ vm_debug_execute(const char *str)
|
|||||||
|
|
||||||
// But if this is -1, then something went wrong
|
// But if this is -1, then something went wrong
|
||||||
if (args.addr2 == -1) {
|
if (args.addr2 == -1) {
|
||||||
|
free(orig);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,6 +249,7 @@ vm_debug_execute(const char *str)
|
|||||||
|
|
||||||
// Oh no
|
// Oh no
|
||||||
if (args.addr1 == -1) {
|
if (args.addr1 == -1) {
|
||||||
|
free(orig);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -258,7 +262,7 @@ vm_debug_execute(const char *str)
|
|||||||
|
|
||||||
cmd->handler(&args);
|
cmd->handler(&args);
|
||||||
|
|
||||||
free(ebuf);
|
free(orig);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user