diff options
-rw-r--r-- | tanja.c | 20 |
1 files changed, 10 insertions, 10 deletions
@@ -172,15 +172,15 @@ void tn_el_free(tn_el el) { } -static inline tn_el el_newv(char t, va_list va) { +static inline tn_el el_newv(char t, va_list *va) { if(t == TN_VT_AR || t == TN_VT_MAP) return va_arg(va, tn_el); tn_el a; a.type = t; switch(t) { - case TN_VT_INT: a.v.i = va_arg(va, int64_t); break; - case TN_VT_NUM: a.v.n = va_arg(va, double); break; - case TN_VT_STR: a.v.s = va_arg(va, char *); break; + case TN_VT_INT: a.v.i = va_arg(*va, int64_t); break; + case TN_VT_NUM: a.v.n = va_arg(*va, double); break; + case TN_VT_STR: a.v.s = va_arg(*va, char *); break; default: assert(t == TN_VT_WC); } return a; @@ -190,7 +190,7 @@ static inline tn_el el_newv(char t, va_list va) { tn_el tn_el_new(char t, ...) { va_list va; va_start(va, t); - tn_el e = el_newv(t, va); + tn_el e = el_newv(t, &va); va_end(va); return e; } @@ -318,7 +318,7 @@ tn_el tn_array_new(char *lst, ...) { a.v.a = malloc(a.size*sizeof(tn_el)); int i; for(i=0; i<a.count; i++) - a.v.a[i] = el_newv(lst[i], va); + a.v.a[i] = el_newv(lst[i], &va); } else a.v.a = NULL; va_end(va); @@ -346,7 +346,7 @@ void tn_array_append(tn_el *a, char *lst, ...) { va_start(va, lst); int i; for(i=0; i<n; i++) - a->v.a[a->count++] = el_newv(lst[i], va); + a->v.a[a->count++] = el_newv(lst[i], &va); va_end(va); } @@ -426,7 +426,7 @@ tn_el tn_map_new(int s, char *lst, ...) { int i; for(i=0; i<len; i++) { char *k = va_arg(va, char *); - tn_map_set_one(&a, k, el_newv(lst[i], va)); + tn_map_set_one(&a, k, el_newv(lst[i], &va)); } va_end(va); return a; @@ -442,7 +442,7 @@ void tn_map_set(tn_el *m, char *lst, ...) { int i; for(i=0; i<len; i++) { char *k = va_arg(va, char *); - tn_map_set_one(m, k, el_newv(lst[i], va)); + tn_map_set_one(m, k, el_newv(lst[i], &va)); } va_end(va); } @@ -484,7 +484,7 @@ tn_tuple *tn_tuple_new(char *lst, ...) { va_start(va, lst); int i; for(i=0; i<t->n; i++) - t->e[i] = el_newv(lst[i], va); + t->e[i] = el_newv(lst[i], &va); va_end(va); return t; } |