diff --git a/bin/miaou-bash b/bin/miaou-bash
index 40ba50d..4841452 100755
--- a/bin/miaou-bash
+++ b/bin/miaou-bash
@@ -290,6 +290,7 @@ function dump_failure {
function save_err_trace_to_main {
miaou_debug ""
local i source lineno funcname
+ for i in "${tmp_error[@]}"; do >>"$MIAOU_BASH_ERROR_CHILDREN" echo "$i"; done
for i in "${!error_source[@]}"; do
source="${error_source[$i]}"
lineno="${error_lineno[$i]}"
@@ -297,7 +298,6 @@ function save_err_trace_to_main {
miaou_debug ""
>>"$MIAOU_BASH_ERROR_CHILDREN" echo -e "\tmiaou_trace: source=${source} lineno=${lineno} funcname=${funcname}"
done
- for i in "${tmp_error[@]}"; do >>"$MIAOU_BASH_ERROR_CHILDREN" echo "$i"; done
miaou_debug ""
}
@@ -347,10 +347,25 @@ function load_tmp_error {
miaou_debug ""
else
miaou_debug ""
- local i
- for i in "${tmp_error[@]}"; do
- miaou_debug ""
+ local i miaou_error_regex last_miaou_error_index=-1 content
+ local multiple_errors=()
+ miaou_error_regex='^(.*): line ([0-9]+): miaou_error:'
+ for i in "${!tmp_error[@]}"; do
+ content="${tmp_error[i]}"
+ miaou_debug ""
+ if [[ "$content" =~ $miaou_error_regex ]]; then
+ if [[ $last_miaou_error_index -ge 0 ]]; then
+ multiple_errors+=("$last_miaou_error_index")
+ fi
+ last_miaou_error_index=$i
+ fi
done
+ if [[ "${#multiple_errors[@]}" -gt 0 ]]; then
+ miaou_debug "multiple_errors = ${multiple_errors[*]}"
+ for i in "${multiple_errors[@]}"; do unset "tmp_error[$i]"; done
+ tmp_error=("${tmp_error[@]}")
+ fi
+
miaou_debug ""
fi
else
diff --git a/test/stub/extra/library.bash b/test/stub/extra/library.bash
index 2868884..0a33269 100755
--- a/test/stub/extra/library.bash
+++ b/test/stub/extra/library.bash
@@ -6,7 +6,6 @@
function library {
echo library loaded
>&2 echo stderr from library
- pwd
# . "./test/stub/extra/onemore.bash"
"./test/stub/extra/onemore.bash"
}