From d4552af39b5006aa5f3a9d2d0c67411464ec54b9 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Mon, 17 Apr 2017 11:47:21 -0500 Subject: [PATCH] Fix and test for macLib losing error status Problem found & diagnosed by Mark Rivers. --- src/libCom/macLib/macCore.c | 4 ++-- src/libCom/test/macLibTest.c | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libCom/macLib/macCore.c b/src/libCom/macLib/macCore.c index f550ed7dc..ba1c84fa4 100644 --- a/src/libCom/macLib/macCore.c +++ b/src/libCom/macLib/macCore.c @@ -857,9 +857,9 @@ static void refer ( MAC_HANDLE *handle, MAC_ENTRY *entry, int level, if ( !refentry->visited ) { /* reference is good, use it */ if ( !handle->dirty ) { - /* copy the already-expanded value, and its error status! */ + /* copy the already-expanded value, merge any error status */ cpy2val( refentry->value, &v, valend ); - entry->error = refentry->error; + entry->error = entry->error || refentry->error; } else { /* translate raw value */ const char *rv = refentry->rawval; diff --git a/src/libCom/test/macLibTest.c b/src/libCom/test/macLibTest.c index 1f00a6ac7..7f1e2c544 100644 --- a/src/libCom/test/macLibTest.c +++ b/src/libCom/test/macLibTest.c @@ -65,7 +65,7 @@ static void ovcheck(void) MAIN(macLibTest) { - testPlan(89); + testPlan(91); if (macCreateHandle(&h, NULL)) testAbort("macCreateHandle() failed"); @@ -203,6 +203,9 @@ MAIN(macLibTest) /* STR2 = "VAL2" */ check("${FOO}", " VAL2"); + check("$(FOO)$(FOO1)", "!VAL2$(FOO1,undefined)"); + check("$(FOO1)$(FOO)", "!$(FOO1,undefined)VAL2"); + macPutValue(h, "BAR","${FOO}"); /* FOO = "${BAR}" */ /* BAR = "${FOO}" */