diff --git a/Makefile b/Makefile
index 543f8c757b6904709f1b147a3ed61a3b98512558..02b31a62eef625d51451e9b5f3f9fbcb9b716f03 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 SOURCES := $(wildcard library/*.c) $(wildcard src/*.c)
 
 bin/eval: $(SOURCES)
-	clang $^ -g -Iinclude -fsanitize=address,undefined -lreadline -o bin/eval
+	clang $^ -g -Iinclude -fsanitize=address,undefined,leak -lreadline -o bin/eval
 
 clean:
 	rm -f bin/*
diff --git a/src/main.c b/src/main.c
index 39224829788ffd25fc87536a8c1be94f0c98fa8f..1e1e3a555a4bb73752cd4456230e1f00928a6596 100644
--- a/src/main.c
+++ b/src/main.c
@@ -11,6 +11,10 @@ int main(int argc, char *argv[]) {
     char *temp = readline("expr> ");
     
     do {
+        if (!strcmp(temp, "exit") || !strcmp(temp, "quit")) {
+            free(temp);
+            return 0;
+        }
         add_history(temp);
         //expression_t *expr = expression_cfold(expression_parse(temp));
         expression_t *expr = expression_parse(temp);