mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-05 18:08:03 +02:00
test: fix append_argv()
When I ran "CAIRO_TESTS=a1-bug make test", no test executed because of a bug in append_argv(). The "olen" variable was assuming that we always only append a single argument to argv and the resulting argc was also wrong. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
166be70cb8
commit
669242c2c8
1 changed files with 10 additions and 4 deletions
|
|
@ -280,6 +280,7 @@ append_argv (int *argc, char ***argv, const char *str)
|
|||
int olen;
|
||||
int len;
|
||||
int i;
|
||||
int args_to_add = 0;
|
||||
|
||||
if (str == NULL)
|
||||
return;
|
||||
|
|
@ -290,9 +291,9 @@ append_argv (int *argc, char ***argv, const char *str)
|
|||
doit = FALSE;
|
||||
do {
|
||||
if (doit)
|
||||
*argv = xmalloc (sizeof (char *) * (1 + *argc) + olen);
|
||||
*argv = xmalloc (olen);
|
||||
|
||||
olen = sizeof (char *) * (1 + *argc);
|
||||
olen = sizeof (char *) * (args_to_add + *argc);
|
||||
for (i = 0; i < old_argc; i++) {
|
||||
len = strlen (old_argv[i]) + 1;
|
||||
if (doit) {
|
||||
|
|
@ -310,7 +311,10 @@ append_argv (int *argc, char ***argv, const char *str)
|
|||
(*argv)[i] = (char *) *argv + olen;
|
||||
memcpy ((*argv)[i], s, len);
|
||||
(*argv)[i][len] = '\0';
|
||||
} else {
|
||||
olen += sizeof (char *);
|
||||
}
|
||||
args_to_add++;
|
||||
olen += len + 1;
|
||||
i++;
|
||||
}
|
||||
|
|
@ -321,13 +325,15 @@ append_argv (int *argc, char ***argv, const char *str)
|
|||
if (doit) {
|
||||
(*argv)[i] = (char *) *argv + olen;
|
||||
memcpy ((*argv)[i], s, len);
|
||||
} else {
|
||||
olen += sizeof (char *);
|
||||
}
|
||||
args_to_add++;
|
||||
olen += len;
|
||||
i++;
|
||||
}
|
||||
} while (doit++ == FALSE);
|
||||
(*argv)[i] = NULL;
|
||||
*argc += i;
|
||||
*argc = i;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue