From 1df56265ec58a98b85f63d4c0f2ff09cb4f346e0 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Tue, 09 Oct 2012 22:18:12 -0400 Subject: Protect library functions from IFS changes. --- (limited to 'lib') diff --git a/lib/common.sh b/lib/common.sh index 1488bd7..78f1c62 100644 --- a/lib/common.sh +++ b/lib/common.sh @@ -21,21 +21,30 @@ _OB_COMMON_SM='true' _OB_STACK_VARS= +_OB_SAVED_IFS= _ob_local() { # Push the variable list onto the stack. _OB_STACK_VARS="${_OB_STACK_VARS}|${*}" + + # Save the old IFS value, if any, and set it to its default. + _OB_SAVED_IFS="${IFS}" + unset IFS } _ob_return() { # Unset the variables at the top of the stack. + IFS=' ' unset -v ${_OB_STACK_VARS##*|} # Pop the variable list from the top of the stack. _OB_STACK_VARS="${_OB_STACK_VARS%|*}" + # Restore the saved IFS. + IFS="${_OB_SAVED_IFS}" + return ${1} } -- cgit v0.9.1