Module Name:    src
Committed By:   rillig
Date:           Sat Mar 15 15:36:12 UTC 2025

Modified Files:
        src/bin/expr: expr.y
        src/tests/bin/expr: t_expr.sh

Log Message:
expr: ensure that the result of '|' is never empty

Required by POSIX since at least 2004.


To generate a diff of this commit:
cvs rdiff -u -r1.52 -r1.53 src/bin/expr/expr.y
cvs rdiff -u -r1.13 -r1.14 src/tests/bin/expr/t_expr.sh

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/bin/expr/expr.y
diff -u src/bin/expr/expr.y:1.52 src/bin/expr/expr.y:1.53
--- src/bin/expr/expr.y:1.52	Sat Mar 15 14:33:39 2025
+++ src/bin/expr/expr.y	Sat Mar 15 15:36:12 2025
@@ -1,4 +1,4 @@
-/* $NetBSD: expr.y,v 1.52 2025/03/15 14:33:39 rillig Exp $ */
+/* $NetBSD: expr.y,v 1.53 2025/03/15 15:36:12 rillig Exp $ */
 
 /*-
  * Copyright (c) 2000, 2025 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 
 %{
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: expr.y,v 1.52 2025/03/15 14:33:39 rillig Exp $");
+__RCSID("$NetBSD: expr.y,v 1.53 2025/03/15 15:36:12 rillig Exp $");
 
 #include <sys/types.h>
 
@@ -86,7 +86,7 @@ expr:	item
 		if ($$)
 			skip_level++;
 	} expr {
-		$$ = $3 ? $1 : $4;
+		$$ = $3 ? $1 : $4[0] != '\0' ? $4 : "0";
 		if ($3)
 			skip_level--;
 	}

Index: src/tests/bin/expr/t_expr.sh
diff -u src/tests/bin/expr/t_expr.sh:1.13 src/tests/bin/expr/t_expr.sh:1.14
--- src/tests/bin/expr/t_expr.sh:1.13	Sat Mar 15 15:33:00 2025
+++ src/tests/bin/expr/t_expr.sh	Sat Mar 15 15:36:12 2025
@@ -1,4 +1,4 @@
-# $NetBSD: t_expr.sh,v 1.13 2025/03/15 15:33:00 rillig Exp $
+# $NetBSD: t_expr.sh,v 1.14 2025/03/15 15:36:12 rillig Exp $
 #
 # Copyright (c) 2007 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -167,8 +167,7 @@ basic_functional_body() {
 	test_expr 1111 \| 00		'1111'
 	test_expr 0000 \| 2222		'2222'
 	test_expr 0000 \| 00		'00'
-	# FIXME: POSIX says the result must be zero.
-	test_expr 0000 \| ''		''
+	test_expr 0000 \| ''		'0'
 
 	test_finish
 }

Reply via email to