diff --git a/gtests/net/packetdrill/lexer.l b/gtests/net/packetdrill/lexer.l
index f8efc970ae132e3d9977b6823b78aacce51b6c37..e30caf455dad5800bbbc6e2eaf89d94fb64d012e 100644
--- a/gtests/net/packetdrill/lexer.l
+++ b/gtests/net/packetdrill/lexer.l
@@ -160,10 +160,12 @@ static void handle_ifdef(enum ifdef_os os, const char *s) {
 	
 	if (os_name_length == -1) {
 		fprintf(stderr, "handle_ifdef with unknown os called.\n");
+		free(code);
 		exit(1);
 	}
 	
 	if (ignore_ifdef(os)) {
+		free(code);
 		return;
 	}