From b004375efb52f42e4dc4cb25d77dbdf3cd02908b Mon Sep 17 00:00:00 2001
From: Jouke Witteveen <j.witteveen@gmail.com>
Date: Tue, 12 Dec 2023 23:17:05 +0100
Subject: [PATCH] [SV 65019] Fix let segfault on value with trailing whitespace

* src/function.c (func_let): Don't try to edit nonexistent values.
* tests/scripts/functions/let: Test trailing whitespace in value list.
---
 src/function.c              | 2 +-
 tests/scripts/functions/let | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/function.c b/src/function.c
index a705c8a0..4596bd90 100644
--- a/src/function.c
+++ b/src/function.c
@@ -927,7 +927,7 @@ func_let (char *o, char **argv, const char *funcname UNUSED)
   while (*vp_next != '\0')
     {
       p = find_next_token (&list_iterator, &len);
-      if (*list_iterator != '\0')
+      if (p && *list_iterator != '\0')
         {
           ++list_iterator;
           p[len] = '\0';
diff --git a/tests/scripts/functions/let b/tests/scripts/functions/let
index 48aec78f..d2e4d822 100644
--- a/tests/scripts/functions/let
+++ b/tests/scripts/functions/let
@@ -42,9 +42,10 @@ null =
 v = $(let    ,$(info blankvar),abc)
 x = $(let $(null),$(info side-effect),abc)
 y = $(let y,,$ydef)
+z = $(let a b, ,+$a+$b+)
 
-all: ; @echo $v/$x/$y',
-              '', "blankvar\nside-effect\nabc/abc/def\n");
+all: ; @echo $v/$x/$y/$z',
+              '', "blankvar\nside-effect\nabc/abc/def/+++\n");
 
 # The example macro from the manual.
 run_make_test('
-- 
2.43.0

