From 0fb9d77e406b1fc8771e50d05079f8b99dfdd5a6 Mon Sep 17 00:00:00 2001 From: "Meredith L. Patterson" <mlp@thesmartpolitenerd.com> Date: Sun, 2 Aug 2015 23:42:38 +0200 Subject: [PATCH] remove error from HSVMContext, make svm_stack_ensure_cap return bool instead --- src/backends/regex.c | 10 +++++----- src/backends/regex.h | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/backends/regex.c b/src/backends/regex.c index 5fe3aa0b..f6494fa9 100644 --- a/src/backends/regex.c +++ b/src/backends/regex.c @@ -184,13 +184,15 @@ void* h_rvm_run__m(HAllocator *mm__, HRVMProg *prog, const uint8_t* input, size_ -void svm_stack_ensure_cap(HAllocator *mm__, HSVMContext *ctx, size_t addl) { +bool svm_stack_ensure_cap(HAllocator *mm__, HSVMContext *ctx, size_t addl) { if (ctx->stack_count + addl >= ctx->stack_capacity) { ctx->stack = mm__->realloc(mm__, ctx->stack, sizeof(*ctx->stack) * (ctx->stack_capacity *= 2)); if (!ctx->stack) { - ctx->error = 1; + return false; } + return true; } + return true; } HParseResult *run_trace(HAllocator *mm__, HRVMProg *orig_prog, HRVMTrace *trace, const uint8_t *input, int len) { @@ -199,7 +201,6 @@ HParseResult *run_trace(HAllocator *mm__, HRVMProg *orig_prog, HRVMTrace *trace, HArena *arena = h_new_arena(mm__, 0); ctx.stack_count = 0; ctx.stack_capacity = 16; - ctx.error = 0; ctx.stack = h_new(HParsedToken*, ctx.stack_capacity); HParsedToken *tmp_res; @@ -207,8 +208,7 @@ HParseResult *run_trace(HAllocator *mm__, HRVMProg *orig_prog, HRVMTrace *trace, for (cur = trace; cur; cur = cur->next) { switch (cur->opcode) { case SVM_PUSH: - svm_stack_ensure_cap(mm__, &ctx, 1); - if (ctx.error) { + if (!svm_stack_ensure_cap(mm__, &ctx, 1)) { goto fail; } tmp_res = a_new(HParsedToken, 1); diff --git a/src/backends/regex.h b/src/backends/regex.h index 5a19b07e..0c51fd09 100644 --- a/src/backends/regex.h +++ b/src/backends/regex.h @@ -43,7 +43,6 @@ typedef struct HSVMContext_ { HParsedToken **stack; size_t stack_count; // number of items on the stack. Thus stack[stack_count] is the first unused item on the stack. size_t stack_capacity; - char error; } HSVMContext; // These actions all assume that the items on the stack are not -- GitLab