libregexp: various fixes

- Check before dereference.
- Fix memory leak
- Remove duplicate if statement.
- Remove trailing spaces.

Change-Id: I140a05c8f7006493dddae753aebfa5b4577c65ef
Reviewed-on: https://plan9port-review.googlesource.com/1301
Reviewed-by: Neven Sajko <nsajko@gmail.com>
Reviewed-by: Russ Cox <rsc@swtch.com>
diff --git a/src/libregexp/regexec.c b/src/libregexp/regexec.c
index a00fbcb..b75f17f 100644
--- a/src/libregexp/regexec.c
+++ b/src/libregexp/regexec.c
@@ -171,7 +171,7 @@
 		return -1;
 	relist1 = malloc(BIGLISTSIZE*sizeof(Relist));
 	if(relist1 == nil){
-		free(relist1);
+		free(relist0);
 		return -1;
 	}
 	j->relist[0] = relist0;
diff --git a/src/libregexp/rregexec.c b/src/libregexp/rregexec.c
index c3a1753..ca48a31 100644
--- a/src/libregexp/rregexec.c
+++ b/src/libregexp/rregexec.c
@@ -40,7 +40,6 @@
 	/* Execute machine once for each character, including terminal NUL */
 	s = j->rstarts;
 	do{
-
 		/* fast check for first char */
 		if(checkstart) {
 			switch(j->starttype) {
diff --git a/src/libregexp/rregsub.c b/src/libregexp/rregsub.c
index 5a4a564..8b3e973 100644
--- a/src/libregexp/rregsub.c
+++ b/src/libregexp/rregsub.c
@@ -27,7 +27,7 @@
 			case '8':
 			case '9':
 				i = *sp-'0';
-				if(mp[i].s.rsp != 0 && mp!=0 && ms>i)
+				if(mp!=0 && mp[i].s.rsp != 0 && ms>i)
 					for(ssp = mp[i].s.rsp;
 					     ssp < mp[i].e.rep;
 					     ssp++)
@@ -46,9 +46,8 @@
 					*dp++ = *sp;
 				break;
 			}
-		}else if(*sp == '&'){				
-			if(mp[0].s.rsp != 0 && mp!=0 && ms>0)
-			if(mp[0].s.rsp != 0)
+		}else if(*sp == '&'){
+			if(mp!=0 && mp[0].s.rsp != 0 && ms>0)
 				for(ssp = mp[0].s.rsp;
 				     ssp < mp[0].e.rep; ssp++)
 					if(dp < ep)