diff --git a/src/lib/libast/hash/hashalloc.c b/src/lib/libast/hash/hashalloc.c index 04d11fdb0..d01a13968 100644 --- a/src/lib/libast/hash/hashalloc.c +++ b/src/lib/libast/hash/hashalloc.c @@ -50,6 +50,7 @@ hashalloc(Hash_table_t* ref, ...) va_list* vp = va; Hash_region_f region = 0; void* handle; + va_listarg tmpval; va_start(ap, ref); @@ -152,7 +153,8 @@ hashalloc(Hash_table_t* ref, ...) va_copy(*vp, ap); vp++; } - va_copy(ap, va_listval(va_arg(ap, va_listarg))); + tmpval = va_listval(va_arg(ap, va_listarg)); + va_copy(ap, tmpval); break; case 0: if (vp > va) diff --git a/src/lib/libast/string/tokscan.c b/src/lib/libast/string/tokscan.c index bea2baf6c..456dc1911 100644 --- a/src/lib/libast/string/tokscan.c +++ b/src/lib/libast/string/tokscan.c @@ -189,6 +189,7 @@ tokscan(register char* s, char** nxt, const char* fmt, ...) char** p_string; char* prv_f = 0; va_list prv_ap; + va_listarg tmpval; va_start(ap, fmt); if (!*s || *s == '\n') @@ -234,7 +235,8 @@ tokscan(register char* s, char** nxt, const char* fmt, ...) prv_f = f; f = va_arg(ap, char*); va_copy(prv_ap, ap); - va_copy(ap, va_listval(va_arg(ap, va_listarg))); + tmpval = va_listval(va_arg(ap, va_listarg)); + va_copy(ap, tmpval); continue; case 'c': p_char = va_arg(ap, char*);