0002-Fix-a-bug-with-Node_elem_new.patch 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. From baab183439ff4e0c6b77d62156d447e61fc1dcfb Mon Sep 17 00:00:00 2001
  2. From: "Arnold D. Robbins" <arnold@skeeve.com>
  3. Date: Wed, 14 Sep 2022 21:08:59 +0300
  4. Subject: [PATCH] Fix a bug with Node_elem_new.
  5. Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
  6. [james.hilliard1@gmail.com: backport from upstream commit
  7. baab183439ff4e0c6b77d62156d447e61fc1dcfb]
  8. ---
  9. ChangeLog | 8 ++++++++
  10. interpret.h | 1 +
  11. test/ChangeLog | 5 +++++
  12. test/Makefile.am | 4 +++-
  13. test/Makefile.in | 9 ++++++++-
  14. test/Maketests | 5 +++++
  15. test/elemnew1.awk | 9 +++++++++
  16. test/elemnew1.ok | 0
  17. 8 files changed, 39 insertions(+), 2 deletions(-)
  18. create mode 100644 test/elemnew1.awk
  19. create mode 100644 test/elemnew1.ok
  20. diff --git a/ChangeLog b/ChangeLog
  21. index 5fb25483..cd9d9fcd 100644
  22. --- a/ChangeLog
  23. +++ b/ChangeLog
  24. @@ -1,3 +1,11 @@
  25. +2022-09-14 Arnold D. Robbins <arnold@skeeve.com>
  26. +
  27. + * interpret.h (r_interpret): For the `push' opcodes, upref
  28. + the Node_elem_new. See test case elemnew1. Thanks to
  29. + Emanuel Attila Czirai <corre.a.buscar@gmail.com> for the report,
  30. + and to Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
  31. + for the fix.
  32. +
  33. 2022-09-04 Arnold D. Robbins <arnold@skeeve.com>
  34. * 5.2.0: Release tar ball made.
  35. diff --git a/interpret.h b/interpret.h
  36. index 57d060e6..268655b2 100644
  37. --- a/interpret.h
  38. +++ b/interpret.h
  39. @@ -238,6 +238,7 @@ uninitialized_scalar:
  40. _("reference to uninitialized argument `%s'") :
  41. _("reference to uninitialized variable `%s'"),
  42. save_symbol->vname);
  43. + UPREF(m);
  44. PUSH(m);
  45. break;
  46. diff --git a/test/ChangeLog b/test/ChangeLog
  47. index a73637bf..ea08edee 100644
  48. --- a/test/ChangeLog
  49. +++ b/test/ChangeLog
  50. @@ -1,3 +1,8 @@
  51. +2022-09-14 Arnold D. Robbins <arnold@skeeve.com>
  52. +
  53. + * Makefile.am (EXTRA_DIST): New test: elemnew1.
  54. + * elemnew1.awk, elemnew1.ok: New files.
  55. +
  56. 2022-09-04 Arnold D. Robbins <arnold@skeeve.com>
  57. * 5.2.0: Release tar ball made.
  58. diff --git a/test/Makefile.am b/test/Makefile.am
  59. index ab06974c..8a5c3c49 100644
  60. --- a/test/Makefile.am
  61. +++ b/test/Makefile.am
  62. @@ -282,6 +282,8 @@ EXTRA_DIST = \
  63. dumpvars.ok \
  64. dynlj.awk \
  65. dynlj.ok \
  66. + elemnew1.awk \
  67. + elemnew1.ok \
  68. escapebrace.awk \
  69. escapebrace.in \
  70. escapebrace.ok \
  71. @@ -1480,7 +1482,7 @@ GAWK_EXT_TESTS = \
  72. binmode1 charasbytes clos1way clos1way2 clos1way3 clos1way4 \
  73. clos1way5 clos1way6 colonwarn commas crlf dbugeval dbugeval2 \
  74. dbugeval3 dbugtypedre1 dbugtypedre2 delsub devfd devfd1 devfd2 \
  75. - dfacheck1 dumpvars errno exit fieldwdth forcenum fpat1 fpat2 \
  76. + dfacheck1 dumpvars elemnew1 errno exit fieldwdth forcenum fpat1 fpat2 \
  77. fpat3 fpat4 fpat5 fpat6 fpat7 fpat8 fpat9 fpatnull fsfwfs functab1 \
  78. functab2 functab3 functab6 funlen fwtest fwtest2 fwtest3 fwtest4 \
  79. fwtest5 fwtest6 fwtest7 fwtest8 genpot gensub gensub2 gensub3 \
  80. diff --git a/test/Makefile.in b/test/Makefile.in
  81. index 834feb09..a4fb1cc1 100644
  82. --- a/test/Makefile.in
  83. +++ b/test/Makefile.in
  84. @@ -550,6 +550,8 @@ EXTRA_DIST = \
  85. dumpvars.ok \
  86. dynlj.awk \
  87. dynlj.ok \
  88. + elemnew1.awk \
  89. + elemnew1.ok \
  90. escapebrace.awk \
  91. escapebrace.in \
  92. escapebrace.ok \
  93. @@ -1748,7 +1750,7 @@ GAWK_EXT_TESTS = \
  94. binmode1 charasbytes clos1way clos1way2 clos1way3 clos1way4 \
  95. clos1way5 clos1way6 colonwarn commas crlf dbugeval dbugeval2 \
  96. dbugeval3 dbugtypedre1 dbugtypedre2 delsub devfd devfd1 devfd2 \
  97. - dfacheck1 dumpvars errno exit fieldwdth forcenum fpat1 fpat2 \
  98. + dfacheck1 dumpvars elemnew1 errno exit fieldwdth forcenum fpat1 fpat2 \
  99. fpat3 fpat4 fpat5 fpat6 fpat7 fpat8 fpat9 fpatnull fsfwfs functab1 \
  100. functab2 functab3 functab6 funlen fwtest fwtest2 fwtest3 fwtest4 \
  101. fwtest5 fwtest6 fwtest7 fwtest8 genpot gensub gensub2 gensub3 \
  102. @@ -4476,6 +4478,11 @@ dfacheck1:
  103. @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
  104. @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
  105. +elemnew1:
  106. + @echo $@
  107. + @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
  108. + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
  109. +
  110. exit:
  111. @echo $@
  112. @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@
  113. diff --git a/test/Maketests b/test/Maketests
  114. index 3a667af8..90828e7f 100644
  115. --- a/test/Maketests
  116. +++ b/test/Maketests
  117. @@ -1432,6 +1432,11 @@ dfacheck1:
  118. @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
  119. @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
  120. +elemnew1:
  121. + @echo $@
  122. + @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
  123. + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
  124. +
  125. exit:
  126. @echo $@
  127. @-$(LOCALES) AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@
  128. diff --git a/test/elemnew1.awk b/test/elemnew1.awk
  129. new file mode 100644
  130. index 00000000..58dc9fcd
  131. --- /dev/null
  132. +++ b/test/elemnew1.awk
  133. @@ -0,0 +1,9 @@
  134. +function add_flags(old) {
  135. + if (old)
  136. + return 0
  137. + if (!old)
  138. + return 1
  139. +}
  140. +BEGIN {
  141. + a[0]=add_flags(a[0])
  142. +}
  143. diff --git a/test/elemnew1.ok b/test/elemnew1.ok
  144. new file mode 100644
  145. index 00000000..e69de29b
  146. --
  147. 2.34.1