summaryrefslogtreecommitdiff
path: root/common/lib/libprop/prop_stack.h
diff options
context:
space:
mode:
authorjoerg <joerg@NetBSD.org>2007-08-30 12:23:53 +0000
committerjoerg <joerg@NetBSD.org>2007-08-30 12:23:53 +0000
commit4deb593145a6d95f78a080aefb8cfc760bcddac9 (patch)
tree798627c927bc10e7c4639b8f24a47fcdaf82600a /common/lib/libprop/prop_stack.h
parentebcc6a8e1aa8ec2e8fd237a3d1512d620918c753 (diff)
Avoid using unbound amount of stack frames in prop_object_equal
by using a dynamic stack as well. Reorder arguments for the internalizer as the iteration is always present and should go before possibly NULL arguments. Reviewed by mjf@ and adrianp@
Diffstat (limited to 'common/lib/libprop/prop_stack.h')
-rw-r--r--common/lib/libprop/prop_stack.h12
1 files changed, 5 insertions, 7 deletions
diff --git a/common/lib/libprop/prop_stack.h b/common/lib/libprop/prop_stack.h
index 4430e001dea..dca99c15279 100644
--- a/common/lib/libprop/prop_stack.h
+++ b/common/lib/libprop/prop_stack.h
@@ -1,4 +1,4 @@
-/* $NetBSD: prop_stack.h,v 1.1 2007/08/16 21:44:08 joerg Exp $ */
+/* $NetBSD: prop_stack.h,v 1.2 2007/08/30 12:23:54 joerg Exp $ */
/*-
* Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -38,15 +38,13 @@
struct _prop_stack_intern_elem {
prop_object_t object;
- void *object_data;
- void *iterator;
+ void *object_data[3];
};
struct _prop_stack_extern_elem {
SLIST_ENTRY(_prop_stack_extern_elem) stack_link;
prop_object_t object;
- void *object_data;
- void *iterator;
+ void *object_data[3];
};
#define PROP_STACK_INTERN_ELEMS 16
@@ -60,7 +58,7 @@ struct _prop_stack {
typedef struct _prop_stack *prop_stack_t;
void _prop_stack_init(prop_stack_t);
-bool _prop_stack_push(prop_stack_t, prop_object_t, void *, void *);
-bool _prop_stack_pop(prop_stack_t, prop_object_t *, void **, void **);
+bool _prop_stack_push(prop_stack_t, prop_object_t, void *, void *, void *);
+bool _prop_stack_pop(prop_stack_t, prop_object_t *, void **, void **, void **);
#endif