diff --git a/ChangeLog b/ChangeLog
index a5d8d7e85..e2d561105 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2015-04-15 Peter Stephenson
+ * 34892 (slightly tweaked): Src/math.c, Test/C01arith.ztst: fix
+ math evaluation with empty expression resulting from substitution.
+
* 34887: Src/exec, Test/E01options.ztst: assignments before
"command special-builtin/func" in POSIX_BUILTINS mode behave as
normal command. Tidy up case handling in code and add test.
diff --git a/Src/math.c b/Src/math.c
index c047725c5..2105180c8 100644
--- a/Src/math.c
+++ b/Src/math.c
@@ -1398,7 +1398,7 @@ matheval(char *s)
if (!mlevel)
outputradix = outputunderscore = 0;
- if (!*s) {
+ if (!*s || *s == Nularg) {
x.type = MN_INTEGER;
x.u.l = 0;
return x;
@@ -1435,7 +1435,7 @@ mathevalarg(char *s, char **ss)
*
* To avoid a more opaque error further in, bail out here.
*/
- if (!*s) {
+ if (!*s || *s == Nularg) {
zerr("bad math expression: empty string");
return (zlong)0;
}
diff --git a/Test/C01arith.ztst b/Test/C01arith.ztst
index d3176dd5e..e2dfe56fc 100644
--- a/Test/C01arith.ztst
+++ b/Test/C01arith.ztst
@@ -383,4 +383,7 @@
print ${$(( $1 * 100 ))%%.[0-9]#})
0:Arithmetic substitution nested in parameter substitution
>3246
-
+
+ print $((`:`))
+0:Null string in arithmetic evaluation after command substitution
+>0