aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-sexp.c
diff options
context:
space:
mode:
authorNot Zed <NotZed@Ximian.com>2001-06-15 13:44:43 +0800
committerMichael Zucci <zucchi@src.gnome.org>2001-06-15 13:44:43 +0800
commit7ee90ffe77621056b0ea501ca02ff942dc64b005 (patch)
tree4207871e59178feb15a0443a9f80e0e978f7ea7c /e-util/e-sexp.c
parent8ab688397f3142538b9b464b0024896ce8453adc (diff)
downloadgsoc2013-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.c29
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;
}