now fix that segfault and other bug from yesternight
do it like ksh93 though, not like bash and zsh
This commit is contained in:
		
							
								
								
									
										14
									
								
								check.t
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								check.t
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
# $MirOS: src/bin/mksh/check.t,v 1.421 2011/03/12 23:04:44 tg Exp $
 | 
			
		||||
# $MirOS: src/bin/mksh/check.t,v 1.422 2011/03/12 23:06:41 tg Exp $
 | 
			
		||||
# $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $
 | 
			
		||||
# $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $
 | 
			
		||||
# $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $
 | 
			
		||||
@@ -1373,28 +1373,24 @@ expected-stdout:
 | 
			
		||||
name: expand-threecolons-dblq
 | 
			
		||||
description:
 | 
			
		||||
	Check for a particular thing that used to segfault
 | 
			
		||||
	XXX still does, and decide on stderr
 | 
			
		||||
stdin:
 | 
			
		||||
	TEST=1234
 | 
			
		||||
	echo "${TEST:1:2:3}"
 | 
			
		||||
	echo $? but still living
 | 
			
		||||
expected-stdout:
 | 
			
		||||
	1 but still living
 | 
			
		||||
expected-stderr-pattern:
 | 
			
		||||
	/.*/
 | 
			
		||||
	/bad substitution/
 | 
			
		||||
expected-exit: 1
 | 
			
		||||
---
 | 
			
		||||
name: expand-threecolons-unq
 | 
			
		||||
description:
 | 
			
		||||
	Check for a particular thing that used to not error out
 | 
			
		||||
	XXX still doesn't, and decide on stderr
 | 
			
		||||
stdin:
 | 
			
		||||
	TEST=1234
 | 
			
		||||
	echo ${TEST:1:2:3}
 | 
			
		||||
	echo $? but still living
 | 
			
		||||
expected-stdout:
 | 
			
		||||
	1 but still living
 | 
			
		||||
expected-stderr-pattern:
 | 
			
		||||
	/.*/
 | 
			
		||||
	/bad substitution/
 | 
			
		||||
expected-exit: 1
 | 
			
		||||
---
 | 
			
		||||
name: eglob-bad-1
 | 
			
		||||
description:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								eval.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								eval.c
									
									
									
									
									
								
							@@ -22,7 +22,7 @@
 | 
			
		||||
 | 
			
		||||
#include "sh.h"
 | 
			
		||||
 | 
			
		||||
__RCSID("$MirOS: src/bin/mksh/eval.c,v 1.97 2011/03/12 23:04:45 tg Exp $");
 | 
			
		||||
__RCSID("$MirOS: src/bin/mksh/eval.c,v 1.98 2011/03/12 23:06:43 tg Exp $");
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * string expansion
 | 
			
		||||
@@ -391,7 +391,9 @@ expand(const char *cp,	/* input word */
 | 
			
		||||
						} else {
 | 
			
		||||
							end = mid +
 | 
			
		||||
							    (wdscan(mid, ADELIM) - mid);
 | 
			
		||||
							if (end >= stg)
 | 
			
		||||
							if (end >= stg ||
 | 
			
		||||
							    /* more than max delimiters */
 | 
			
		||||
							    end[-1] != /*{*/ '}')
 | 
			
		||||
								goto unwind_substsyn;
 | 
			
		||||
							end[-2] = EOS;
 | 
			
		||||
							sp += end - beg - 1;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user