diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-24 12:29:20 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-24 12:29:20 +0000 |
| commit | 08558d8cdab7598c4a2e077bd665b49bfee18a79 (patch) | |
| tree | 941dfa3bfa4b51ca3b0a0dd0ca90f8663832460d /src/codegen/codegen_utils.c | |
| parent | 812fe9cbe124bf39a06f58a538c8c01f7402fb09 (diff) | |
Fix for #107
Diffstat (limited to 'src/codegen/codegen_utils.c')
| -rw-r--r-- | src/codegen/codegen_utils.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/codegen/codegen_utils.c b/src/codegen/codegen_utils.c index a7e4925..3169eba 100644 --- a/src/codegen/codegen_utils.c +++ b/src/codegen/codegen_utils.c @@ -519,8 +519,22 @@ char *extract_call_args(const char *args) // Parse original method name from mangled name. const char *parse_original_method_name(const char *mangled) { - const char *last = strrchr(mangled, '_'); - return last ? last + 1 : mangled; + const char *sep = strstr(mangled, "__"); + if (!sep) + { + return mangled; + } + + // Let's iterate to find the last `__`. + const char *last_double = NULL; + const char *p = mangled; + while ((p = strstr(p, "__"))) + { + last_double = p; + p += 2; + } + + return last_double ? last_double + 2 : mangled; } // Replace string type in arguments. |
