summaryrefslogtreecommitdiff
path: root/pbstream.h
diff options
context:
space:
mode:
authorJoshua Haberman <joshua@reverberate.org>2009-02-26 17:41:43 -0800
committerJoshua Haberman <joshua@reverberate.org>2009-02-26 17:41:43 -0800
commite195d5379deb5699ea7cb76e4b3077a2cffa40da (patch)
treef8cd081aa4943d3bef63969dda6628866963fdc5 /pbstream.h
parenteaa0cdd6a162139406b24114aa6c5f27da3b1af0 (diff)
Since the stack has a fixed size, don't allocate dynamically.
Diffstat (limited to 'pbstream.h')
-rw-r--r--pbstream.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/pbstream.h b/pbstream.h
index d564970..b8befc6 100644
--- a/pbstream.h
+++ b/pbstream.h
@@ -7,6 +7,9 @@
#include <stdint.h>
#include <stdbool.h>
+/* The maximum that any submessages can be nested. Matches proto2's limit. */
+#define PBSTREAM_MAX_STACK 64
+
/* A list of types as they can appear in a .proto file. */
typedef enum pbstream_type {
PBSTREAM_TYPE_DOUBLE = 0,
@@ -101,7 +104,8 @@ struct pbstream_parse_stack_frame {
/* The stream parser's state. */
struct pbstream_parse_state {
size_t offset;
- struct pbstream_parse_stack_frame *base, *top, *limit;
+ struct pbstream_parse_stack_frame stack[PBSTREAM_MAX_STACK];
+ struct pbstream_parse_stack_frame *top, *limit;
};
/* Call this once before parsing to initialize the data structures.
@@ -111,8 +115,6 @@ void pbstream_init_parser(
struct pbstream_parse_state *state,
struct pbstream_fieldset *toplevel_fieldset);
-void pbstream_free_parser(struct pbstream_parse_state *state);
-
/* Status as returned by pbstream_parse(). Status codes <0 are fatal errors
* that cannot be recovered. Status codes >0 are unusual but nonfatal events,
* which nonetheless must be handled differently since they do not return data
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback