summaryrefslogtreecommitdiff
path: root/tools/make_patch.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/make_patch.c')
-rw-r--r--tools/make_patch.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/tools/make_patch.c b/tools/make_patch.c
index a67a4a399..d83ffc76c 100644
--- a/tools/make_patch.c
+++ b/tools/make_patch.c
@@ -214,6 +214,9 @@ void interpret_command(char *command, const struct Symbol *current_hook, const s
// Use the arguments
if (!strcmp(command, "patch") || !strcmp(command, "PATCH") || !strcmp(command, "patch_") || !strcmp(command, "PATCH_")) {
+ if (argc > 2) {
+ error_exit("Error: Invalid arguments for command: \"%s\"", command);
+ }
if (!current_hook) {
error_exit("Error: No current patch for command: \"%s\"", command);
}
@@ -224,8 +227,13 @@ void interpret_command(char *command, const struct Symbol *current_hook, const s
if (fseek(new_rom, current_offset, SEEK_SET)) {
error_exit("Error: Cannot seek to \"vc_patch %s\" in the new ROM\n", current_hook->name);
}
- const struct Symbol *current_hook_end = symbol_find_cat(symbols, current_hook->name, "_End");
- int length = current_hook_end->offset - current_offset;
+ int length;
+ if (argc == 2) {
+ length = parse_number(argv[1], 0);
+ } else {
+ const struct Symbol *current_hook_end = symbol_find_cat(symbols, current_hook->name, "_End");
+ length = current_hook_end->offset - current_offset;
+ }
buffer_append(patches, &(struct Patch){current_offset, length});
bool modified = false;
if (length == 1) {