summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sv.c6
-rw-r--r--t/lib/warnings/9uninit8
2 files changed, 13 insertions, 1 deletions
diff --git a/sv.c b/sv.c
index 088359f62d..dd0b3d456a 100644
--- a/sv.c
+++ b/sv.c
@@ -15823,6 +15823,11 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv,
switch (obase->op_type) {
+ case OP_UNDEF:
+ /* undef should care if its args are undef - any warnings
+ * will be from tied/magic vars */
+ break;
+
case OP_RV2AV:
case OP_RV2HV:
case OP_PADAV:
@@ -16369,7 +16374,6 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv,
case OP_ALARM:
case OP_SEMGET:
case OP_GETLOGIN:
- case OP_UNDEF:
case OP_SUBSTR:
case OP_AEACH:
case OP_EACH:
diff --git a/t/lib/warnings/9uninit b/t/lib/warnings/9uninit
index 51719413ac..b8fd925ce5 100644
--- a/t/lib/warnings/9uninit
+++ b/t/lib/warnings/9uninit
@@ -2186,3 +2186,11 @@ use warnings 'uninitialized';
my $x = "" . open my $fh, "<", "no / such / file";
EXPECT
Use of uninitialized value in concatenation (.) or string at - line 3.
+########
+# RT #123910
+# undef's arg being undef doesn't trigger warnings - any warning will be
+# from tied/magic vars
+use warnings 'uninitialized';
+undef $0;
+EXPECT
+Use of uninitialized value in undef operator at - line 5.