diff options
Diffstat (limited to 'src/format/format.c')
-rw-r--r-- | src/format/format.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/format/format.c b/src/format/format.c index 327b28e..978a3d2 100644 --- a/src/format/format.c +++ b/src/format/format.c @@ -546,7 +546,6 @@ GBinSymbol **g_binary_format_get_symbols(const GBinFormat *format, size_t *count * * * Paramètres : format = informations chargées à consulter. * * addr = adresse liée à la chaîne à traiter. * -* base = contenu complet et original d'une chaîne. * * length = taille de la chaîne à représenter. * * * * Description : Construit une désignation pour chaîne de caractères. * @@ -557,9 +556,11 @@ GBinSymbol **g_binary_format_get_symbols(const GBinFormat *format, size_t *count * * ******************************************************************************/ -char *create_string_label(GBinFormat *format, const vmpa2t *addr, const char *base, size_t length) +char *create_string_label(GBinFormat *format, const vmpa2t *addr, size_t length) { char *result; /* Nouvelle chaîne à retourner */ + vmpa2t pos; /* Tête de lecture modifiable */ + const bin_t *base; /* Contenu complet et original */ unsigned int wc; /* Nombre de mots rencontrés */ size_t iter; /* Tête d'écriture de recopie */ size_t i; /* Boucle de parcours */ @@ -567,6 +568,13 @@ char *create_string_label(GBinFormat *format, const vmpa2t *addr, const char *ba GBinSymbol *found; /* Symbole similaire trouvé */ VMPA_BUFFER(last_sfx); /* Dernier suffixe à intégrer */ + copy_vmpa(&pos, addr); + + base = g_binary_content_get_raw_access(format->content, &pos, length); + + if (base == NULL) + return NULL; + result = (char *)calloc(length + 5 + VMPA_MAX_LEN + 1, sizeof(char)); wc = 0; |