diff options
author | Not Zed <NotZed@Ximian.com> | 2001-06-15 13:44:43 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2001-06-15 13:44:43 +0800 |
commit | 7ee90ffe77621056b0ea501ca02ff942dc64b005 (patch) | |
tree | 4207871e59178feb15a0443a9f80e0e978f7ea7c /e-util/e-sexp.c | |
parent | 8ab688397f3142538b9b464b0024896ce8453adc (diff) | |
download | gsoc2013-evolution-7ee90ffe77621056b0ea501ca02ff942dc64b005.tar gsoc2013-evolution-7ee90ffe77621056b0ea501ca02ff942dc64b005.tar.gz gsoc2013-evolution-7ee90ffe77621056b0ea501ca02ff942dc64b005.tar.bz2 gsoc2013-evolution-7ee90ffe77621056b0ea501ca02ff942dc64b005.tar.lz gsoc2013-evolution-7ee90ffe77621056b0ea501ca02ff942dc64b005.tar.xz gsoc2013-evolution-7ee90ffe77621056b0ea501ca02ff942dc64b005.tar.zst gsoc2013-evolution-7ee90ffe77621056b0ea501ca02ff942dc64b005.zip |
REmove a silly hardcoded term limit, oops forgot about that.
2001-06-15 Not Zed <NotZed@Ximian.com>
* e-sexp.c (parse_values): REmove a silly hardcoded term limit,
oops forgot about that.
svn path=/trunk/; revision=10248
Diffstat (limited to 'e-util/e-sexp.c')
-rw-r--r-- | e-util/e-sexp.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/e-util/e-sexp.c b/e-util/e-sexp.c index 4ba42cb336..af319aa2dc 100644 --- a/e-util/e-sexp.c +++ b/e-util/e-sexp.c @@ -654,7 +654,7 @@ e_sexp_term_eval(struct _ESExp *f, struct _ESExpTerm *t) return r; } -#if 0 +#ifdef TESTER static void eval_dump_result(ESExpResult *r, int depth) { @@ -790,24 +790,33 @@ parse_values(ESExp *f, int *len) { int token; struct _ESExpTerm **terms; - int i=0; + int i, size = 0; GScanner *gs = f->scanner; + GSList *list = NULL, *l; p(printf("parsing values\n")); - /* FIXME: This hardcoded nonsense!!! :) */ - terms = g_malloc0(30*sizeof(*terms)); - while ( (token = g_scanner_peek_next_token(gs)) != G_TOKEN_EOF && token != ')') { - terms[i]=parse_value(f); - i++; + list = g_slist_prepend(list, parse_value(f)); + size++; + } + + /* go over the list, and put them backwards into the term array */ + terms = g_malloc(size * sizeof(*terms)); + l = list; + for (i=size-1;i>=0;i--) { + g_assert(l); + g_assert(l->data); + terms[i] = l->data; + l = g_slist_next(l); } + g_slist_free(list); - p(printf("found %d subterms\n", i)); - *len = i; + p(printf("found %d subterms\n", size)); + *len = size; - p(printf("dont parsing values\n")); + p(printf("done parsing values\n")); return terms; } |