summaryrefslogtreecommitdiff
path: root/src/format/format.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/format/format.c')
-rw-r--r--src/format/format.c12
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;