From 62d1695632ac9cc17ca9bcb7428f2d01fe16d9da Mon Sep 17 00:00:00 2001 From: Joseph Poirier Date: Sun, 14 Jun 2015 17:03:55 -0500 Subject: [PATCH] Fixes issue #5 --- expression.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/expression.c b/expression.c index 5a3d847..502e987 100644 --- a/expression.c +++ b/expression.c @@ -755,7 +755,7 @@ void ExpressionPrefixOperator(struct ParseState *Parser, int Size = TypeSize(TopValue->Typ->FromType, 0, true); struct Value *StackValue; void *ResultPtr; - if (TopValue->Val->Pointer == NULL) + if (Op != TokenUnaryNot && TopValue->Val->Pointer == NULL) ProgramFail(Parser, "a. invalid use of a NULL pointer"); if (!TopValue->IsLValue) ProgramFail(Parser, "can't assign to this"); @@ -768,6 +768,10 @@ void ExpressionPrefixOperator(struct ParseState *Parser, TopValue->Val->Pointer = (void*)((char*)TopValue->Val->Pointer-Size); break; + case TokenUnaryNot: + TopValue->Val->Pointer = + (void*)((char*)(!TopValue->Val->Pointer)); + break; default: ProgramFail(Parser, "invalid operation"); break;