Nuitka-winsvc 2.2.3__cp311-cp311-win_amd64.whl → 2.3.2__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of Nuitka-winsvc might be problematic. Click here for more details.

Files changed (201) hide show
  1. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/METADATA +2 -1
  2. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/RECORD +201 -200
  3. nuitka/Bytecodes.py +4 -2
  4. nuitka/HardImportRegistry.py +1 -0
  5. nuitka/MainControl.py +16 -10
  6. nuitka/ModuleRegistry.py +15 -0
  7. nuitka/OptionParsing.py +30 -8
  8. nuitka/Options.py +106 -45
  9. nuitka/PostProcessing.py +9 -8
  10. nuitka/PythonVersions.py +2 -1
  11. nuitka/Serialization.py +47 -30
  12. nuitka/Version.py +1 -1
  13. nuitka/build/Backend.scons +46 -19
  14. nuitka/build/CCompilerVersion.scons +3 -3
  15. nuitka/build/Onefile.scons +4 -4
  16. nuitka/build/SconsCaching.py +3 -2
  17. nuitka/build/SconsCompilerSettings.py +18 -6
  18. nuitka/build/SconsInterface.py +28 -8
  19. nuitka/build/SconsUtils.py +9 -1
  20. nuitka/build/include/nuitka/allocator.h +58 -2
  21. nuitka/build/include/nuitka/compiled_frame.h +48 -13
  22. nuitka/build/include/nuitka/compiled_function.h +4 -0
  23. nuitka/build/include/nuitka/constants.h +6 -0
  24. nuitka/build/include/nuitka/exception_groups.h +6 -6
  25. nuitka/build/include/nuitka/exceptions.h +3 -3
  26. nuitka/build/include/nuitka/freelists.h +11 -0
  27. nuitka/build/include/nuitka/helper/dictionaries.h +5 -4
  28. nuitka/build/include/nuitka/helper/lists.h +5 -5
  29. nuitka/build/include/nuitka/helper/lists_generated.h +12 -12
  30. nuitka/build/include/nuitka/helper/sequences.h +6 -0
  31. nuitka/build/include/nuitka/helper/slices.h +14 -8
  32. nuitka/build/include/nuitka/helper/subscripts.h +1 -184
  33. nuitka/build/include/nuitka/helper/tuples.h +42 -33
  34. nuitka/build/include/nuitka/importing.h +5 -0
  35. nuitka/build/include/nuitka/prelude.h +49 -5
  36. nuitka/build/include/nuitka/safe_string_ops.h +1 -0
  37. nuitka/build/include/nuitka/threading.h +13 -10
  38. nuitka/build/static_src/CompiledAsyncgenType.c +19 -8
  39. nuitka/build/static_src/CompiledCellType.c +1 -1
  40. nuitka/build/static_src/CompiledCodeHelpers.c +18 -16
  41. nuitka/build/static_src/CompiledCoroutineType.c +23 -19
  42. nuitka/build/static_src/CompiledFrameType.c +46 -34
  43. nuitka/build/static_src/CompiledFunctionType.c +55 -34
  44. nuitka/build/static_src/CompiledGeneratorType.c +21 -19
  45. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +127 -130
  46. nuitka/build/static_src/CompiledMethodType.c +15 -17
  47. nuitka/build/static_src/HelpersAllocator.c +71 -0
  48. nuitka/build/static_src/HelpersAttributes.c +1 -1
  49. nuitka/build/static_src/HelpersBuiltin.c +5 -5
  50. nuitka/build/static_src/HelpersBytes.c +2 -2
  51. nuitka/build/static_src/HelpersCalling.c +3 -0
  52. nuitka/build/static_src/HelpersCallingGenerated.c +952 -133
  53. nuitka/build/static_src/HelpersComparisonEq.c +329 -329
  54. nuitka/build/static_src/HelpersComparisonEqUtils.c +3 -1
  55. nuitka/build/static_src/HelpersComparisonGe.c +322 -322
  56. nuitka/build/static_src/HelpersComparisonGt.c +321 -321
  57. nuitka/build/static_src/HelpersComparisonLe.c +322 -322
  58. nuitka/build/static_src/HelpersComparisonLt.c +321 -321
  59. nuitka/build/static_src/HelpersComparisonNe.c +329 -329
  60. nuitka/build/static_src/HelpersConsole.c +96 -0
  61. nuitka/build/static_src/HelpersConstantsBlob.c +10 -6
  62. nuitka/build/static_src/HelpersDeepcopy.c +10 -8
  63. nuitka/build/static_src/HelpersDictionaries.c +17 -11
  64. nuitka/build/static_src/HelpersDictionariesGenerated.c +65 -29
  65. nuitka/build/static_src/HelpersExceptions.c +107 -9
  66. nuitka/build/static_src/HelpersFilesystemPaths.c +64 -4
  67. nuitka/build/static_src/HelpersFloats.c +20 -14
  68. nuitka/build/static_src/HelpersImport.c +1 -1
  69. nuitka/build/static_src/HelpersJitSources.c +1 -1
  70. nuitka/build/static_src/HelpersLists.c +29 -19
  71. nuitka/build/static_src/HelpersListsGenerated.c +24 -24
  72. nuitka/build/static_src/HelpersMatching.c +32 -5
  73. nuitka/build/static_src/HelpersOperationBinaryAdd.c +90 -63
  74. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +4 -4
  75. nuitka/build/static_src/HelpersOperationBinaryBitand.c +33 -33
  76. nuitka/build/static_src/HelpersOperationBinaryBitor.c +33 -33
  77. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +33 -33
  78. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +24 -24
  79. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +24 -24
  80. nuitka/build/static_src/HelpersOperationBinaryLshift.c +30 -30
  81. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +7 -7
  82. nuitka/build/static_src/HelpersOperationBinaryMod.c +90 -90
  83. nuitka/build/static_src/HelpersOperationBinaryMult.c +64 -58
  84. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +24 -24
  85. nuitka/build/static_src/HelpersOperationBinaryPow.c +27 -27
  86. nuitka/build/static_src/HelpersOperationBinaryRshift.c +30 -30
  87. nuitka/build/static_src/HelpersOperationBinarySub.c +24 -24
  88. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +24 -24
  89. nuitka/build/static_src/HelpersOperationInplaceAdd.c +67 -49
  90. nuitka/build/static_src/HelpersOperationInplaceBitand.c +25 -25
  91. nuitka/build/static_src/HelpersOperationInplaceBitor.c +25 -25
  92. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +25 -25
  93. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +28 -28
  94. nuitka/build/static_src/HelpersOperationInplaceLshift.c +18 -18
  95. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +10 -10
  96. nuitka/build/static_src/HelpersOperationInplaceMod.c +70 -70
  97. nuitka/build/static_src/HelpersOperationInplaceMult.c +33 -33
  98. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +28 -28
  99. nuitka/build/static_src/HelpersOperationInplacePow.c +28 -28
  100. nuitka/build/static_src/HelpersOperationInplaceRshift.c +18 -18
  101. nuitka/build/static_src/HelpersOperationInplaceSub.c +28 -28
  102. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +28 -28
  103. nuitka/build/static_src/HelpersRaising.c +10 -3
  104. nuitka/build/static_src/HelpersSafeStrings.c +14 -4
  105. nuitka/build/static_src/HelpersSlices.c +12 -5
  106. nuitka/build/static_src/HelpersStrings.c +1 -1
  107. nuitka/build/static_src/HelpersTuples.c +20 -15
  108. nuitka/build/static_src/InspectPatcher.c +74 -6
  109. nuitka/build/static_src/MainProgram.c +90 -25
  110. nuitka/build/static_src/MetaPathBasedLoader.c +81 -45
  111. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +2 -2
  112. nuitka/build/static_src/OnefileBootstrap.c +16 -17
  113. nuitka/code_generation/CodeGeneration.py +5 -2
  114. nuitka/code_generation/ConstantCodes.py +2 -2
  115. nuitka/code_generation/DictCodes.py +2 -2
  116. nuitka/code_generation/GlobalConstants.py +5 -0
  117. nuitka/code_generation/GlobalsLocalsCodes.py +2 -2
  118. nuitka/code_generation/ListCodes.py +2 -2
  119. nuitka/code_generation/LocalsDictCodes.py +1 -1
  120. nuitka/code_generation/ModuleCodes.py +19 -0
  121. nuitka/code_generation/PackageResourceCodes.py +14 -0
  122. nuitka/code_generation/SliceCodes.py +3 -3
  123. nuitka/code_generation/SubscriptCodes.py +5 -13
  124. nuitka/code_generation/TupleCodes.py +1 -1
  125. nuitka/code_generation/c_types/CTypePyObjectPointers.py +7 -7
  126. nuitka/code_generation/templates/CodeTemplatesConstants.py +7 -5
  127. nuitka/code_generation/templates/CodeTemplatesLoader.py +2 -0
  128. nuitka/code_generation/templates/CodeTemplatesModules.py +80 -54
  129. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +1 -1
  130. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +59 -8
  131. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +5 -5
  132. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +2 -2
  133. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +2 -2
  134. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +57 -21
  135. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +1 -1
  136. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +5 -5
  137. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +18 -18
  138. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +11 -11
  139. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +3 -3
  140. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +3 -3
  141. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +7 -7
  142. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +3 -3
  143. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +11 -11
  144. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +7 -7
  145. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +10 -10
  146. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +1 -1
  147. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +3 -3
  148. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +4 -1
  149. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +4 -1
  150. nuitka/finalizations/FinalizeMarkups.py +0 -18
  151. nuitka/freezer/DependsExe.py +9 -4
  152. nuitka/freezer/DllDependenciesMacOS.py +1 -1
  153. nuitka/freezer/DllDependenciesWin32.py +1 -1
  154. nuitka/freezer/ImportDetection.py +1 -0
  155. nuitka/freezer/IncludedDataFiles.py +13 -4
  156. nuitka/freezer/IncludedEntryPoints.py +16 -0
  157. nuitka/freezer/Onefile.py +0 -1
  158. nuitka/freezer/Standalone.py +38 -21
  159. nuitka/importing/ImportCache.py +3 -2
  160. nuitka/importing/Importing.py +16 -3
  161. nuitka/importing/StandardLibrary.py +4 -0
  162. nuitka/nodes/ChildrenHavingMixins.py +2 -0
  163. nuitka/nodes/ExpressionBasesGenerated.py +4 -0
  164. nuitka/nodes/HardImportNodesGenerated.py +83 -0
  165. nuitka/nodes/ModuleNodes.py +10 -2
  166. nuitka/nodes/OsSysNodes.py +16 -0
  167. nuitka/nodes/SubscriptNodes.py +3 -3
  168. nuitka/plugins/PluginBase.py +2 -0
  169. nuitka/plugins/standard/DataFilesPlugin.py +22 -1
  170. nuitka/plugins/standard/DillPlugin/DillPlugin.c +3 -3
  171. nuitka/plugins/standard/ImplicitImports.py +3 -0
  172. nuitka/plugins/standard/OptionsNannyPlugin.py +9 -41
  173. nuitka/plugins/standard/PkgResourcesPlugin.py +8 -2
  174. nuitka/plugins/standard/PySidePyQtPlugin.py +3 -0
  175. nuitka/plugins/standard/standard.nuitka-package.config.yml +28 -13
  176. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +2 -2
  177. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +7 -2
  178. nuitka/specs/HardImportSpecs.py +3 -0
  179. nuitka/specs/ParameterSpecs.py +26 -15
  180. nuitka/tools/general/find_module/FindModuleCode.py +3 -2
  181. nuitka/tools/specialize/CTypeDescriptions.py +11 -9
  182. nuitka/tools/testing/Common.py +12 -5
  183. nuitka/tools/testing/SearchModes.py +5 -1
  184. nuitka/tools/testing/run_nuitka_tests/__main__.py +37 -0
  185. nuitka/tools/watch/GitHub.py +1 -7
  186. nuitka/tree/Building.py +9 -6
  187. nuitka/tree/ReformulationMatchStatements.py +51 -14
  188. nuitka/tree/TreeHelpers.py +8 -0
  189. nuitka/utils/CStrings.py +7 -0
  190. nuitka/utils/Execution.py +10 -1
  191. nuitka/utils/FileOperations.py +21 -13
  192. nuitka/utils/Importing.py +24 -0
  193. nuitka/utils/ReExecute.py +12 -3
  194. nuitka/utils/SharedLibraries.py +26 -1
  195. nuitka/utils/Yaml.py +9 -1
  196. {Nuitka_winsvc-2.2.3.data → Nuitka_winsvc-2.3.2.data}/scripts/nuitka-run.bat +0 -0
  197. {Nuitka_winsvc-2.2.3.data → Nuitka_winsvc-2.3.2.data}/scripts/nuitka.bat +0 -0
  198. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/LICENSE.txt +0 -0
  199. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/WHEEL +0 -0
  200. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/entry_points.txt +0 -0
  201. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/top_level.txt +0 -0
@@ -23,7 +23,7 @@ static PyObject *COMPARE_NE_OBJECT_INT_INT(PyObject *operand1, PyObject *operand
23
23
 
24
24
  // Convert to target type.
25
25
  PyObject *result = BOOL_FROM(r);
26
- Py_INCREF(result);
26
+ Py_INCREF_IMMORTAL(result);
27
27
  return result;
28
28
  }
29
29
  #endif
@@ -58,7 +58,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
58
58
  if (operand1 == operand2 && IS_SANE_TYPE(Py_TYPE(operand1))) {
59
59
  bool r = false;
60
60
  PyObject *result = BOOL_FROM(r);
61
- Py_INCREF(result);
61
+ Py_INCREF_IMMORTAL(result);
62
62
  return result;
63
63
  }
64
64
 
@@ -90,7 +90,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
90
90
  return result;
91
91
  }
92
92
 
93
- Py_DECREF(result);
93
+ Py_DECREF_IMMORTAL(result);
94
94
  }
95
95
 
96
96
  // No rich comparison worked, but maybe compare works.
@@ -131,7 +131,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
131
131
 
132
132
  bool r = c != 0;
133
133
  PyObject *result = BOOL_FROM(r);
134
- Py_INCREF(result);
134
+ Py_INCREF_IMMORTAL(result);
135
135
  return result;
136
136
  }
137
137
  }
@@ -151,7 +151,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
151
151
  return result;
152
152
  }
153
153
 
154
- Py_DECREF(result);
154
+ Py_DECREF_IMMORTAL(result);
155
155
  }
156
156
  }
157
157
 
@@ -165,7 +165,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
165
165
  return result;
166
166
  }
167
167
 
168
- Py_DECREF(result);
168
+ Py_DECREF_IMMORTAL(result);
169
169
  }
170
170
 
171
171
  f = RICHCOMPARE(type2);
@@ -178,7 +178,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
178
178
  return result;
179
179
  }
180
180
 
181
- Py_DECREF(result);
181
+ Py_DECREF_IMMORTAL(result);
182
182
  }
183
183
 
184
184
  int c;
@@ -266,7 +266,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
266
266
 
267
267
  bool r = c != 0;
268
268
  PyObject *result = BOOL_FROM(r);
269
- Py_INCREF(result);
269
+ Py_INCREF_IMMORTAL(result);
270
270
  return result;
271
271
  #else
272
272
  bool checked_reverse_op = false;
@@ -286,7 +286,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
286
286
  return result;
287
287
  }
288
288
 
289
- Py_DECREF(result);
289
+ Py_DECREF_IMMORTAL(result);
290
290
  }
291
291
  }
292
292
 
@@ -301,7 +301,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
301
301
  return result;
302
302
  }
303
303
 
304
- Py_DECREF(result);
304
+ Py_DECREF_IMMORTAL(result);
305
305
  }
306
306
 
307
307
  if (checked_reverse_op == false) {
@@ -316,7 +316,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
316
316
  return result;
317
317
  }
318
318
 
319
- Py_DECREF(result);
319
+ Py_DECREF_IMMORTAL(result);
320
320
  }
321
321
  }
322
322
 
@@ -328,13 +328,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
328
328
  case Py_EQ: {
329
329
  bool r = operand1 == operand2;
330
330
  PyObject *result = BOOL_FROM(r);
331
- Py_INCREF(result);
331
+ Py_INCREF_IMMORTAL(result);
332
332
  return result;
333
333
  }
334
334
  case Py_NE: {
335
335
  bool r = operand1 != operand2;
336
336
  PyObject *result = BOOL_FROM(r);
337
- Py_INCREF(result);
337
+ Py_INCREF_IMMORTAL(result);
338
338
  return result;
339
339
  }
340
340
  default:
@@ -402,7 +402,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
402
402
  }
403
403
  }
404
404
 
405
- Py_DECREF(result);
405
+ Py_DECREF_IMMORTAL(result);
406
406
  }
407
407
 
408
408
  // No rich comparison worked, but maybe compare works.
@@ -471,7 +471,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
471
471
  }
472
472
  }
473
473
 
474
- Py_DECREF(result);
474
+ Py_DECREF_IMMORTAL(result);
475
475
  }
476
476
  }
477
477
 
@@ -493,7 +493,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
493
493
  }
494
494
  }
495
495
 
496
- Py_DECREF(result);
496
+ Py_DECREF_IMMORTAL(result);
497
497
  }
498
498
 
499
499
  f = RICHCOMPARE(type2);
@@ -514,7 +514,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
514
514
  }
515
515
  }
516
516
 
517
- Py_DECREF(result);
517
+ Py_DECREF_IMMORTAL(result);
518
518
  }
519
519
 
520
520
  int c;
@@ -630,7 +630,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
630
630
  }
631
631
  }
632
632
 
633
- Py_DECREF(result);
633
+ Py_DECREF_IMMORTAL(result);
634
634
  }
635
635
  }
636
636
 
@@ -653,7 +653,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
653
653
  }
654
654
  }
655
655
 
656
- Py_DECREF(result);
656
+ Py_DECREF_IMMORTAL(result);
657
657
  }
658
658
 
659
659
  if (checked_reverse_op == false) {
@@ -676,7 +676,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
676
676
  }
677
677
  }
678
678
 
679
- Py_DECREF(result);
679
+ Py_DECREF_IMMORTAL(result);
680
680
  }
681
681
  }
682
682
 
@@ -725,7 +725,7 @@ static PyObject *COMPARE_NE_OBJECT_STR_STR(PyObject *operand1, PyObject *operand
725
725
 
726
726
  // Convert to target type.
727
727
  PyObject *result = BOOL_FROM(r);
728
- Py_INCREF(result);
728
+ Py_INCREF_IMMORTAL(result);
729
729
  return result;
730
730
  }
731
731
 
@@ -737,7 +737,7 @@ static PyObject *COMPARE_NE_OBJECT_STR_STR(PyObject *operand1, PyObject *operand
737
737
 
738
738
  // Convert to target type.
739
739
  PyObject *result = BOOL_FROM(r);
740
- Py_INCREF(result);
740
+ Py_INCREF_IMMORTAL(result);
741
741
  return result;
742
742
  } else {
743
743
  if ((a->ob_sval[0] == b->ob_sval[0]) && (memcmp(a->ob_sval, b->ob_sval, len_a) == 0)) {
@@ -745,14 +745,14 @@ static PyObject *COMPARE_NE_OBJECT_STR_STR(PyObject *operand1, PyObject *operand
745
745
 
746
746
  // Convert to target type.
747
747
  PyObject *result = BOOL_FROM(r);
748
- Py_INCREF(result);
748
+ Py_INCREF_IMMORTAL(result);
749
749
  return result;
750
750
  } else {
751
751
  bool r = true;
752
752
 
753
753
  // Convert to target type.
754
754
  PyObject *result = BOOL_FROM(r);
755
- Py_INCREF(result);
755
+ Py_INCREF_IMMORTAL(result);
756
756
  return result;
757
757
  }
758
758
  }
@@ -791,7 +791,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
791
791
  return result;
792
792
  }
793
793
 
794
- Py_DECREF(result);
794
+ Py_DECREF_IMMORTAL(result);
795
795
  }
796
796
 
797
797
  // No rich comparison worked, but maybe compare works.
@@ -832,7 +832,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
832
832
 
833
833
  bool r = c != 0;
834
834
  PyObject *result = BOOL_FROM(r);
835
- Py_INCREF(result);
835
+ Py_INCREF_IMMORTAL(result);
836
836
  return result;
837
837
  }
838
838
  }
@@ -852,7 +852,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
852
852
  return result;
853
853
  }
854
854
 
855
- Py_DECREF(result);
855
+ Py_DECREF_IMMORTAL(result);
856
856
  }
857
857
  }
858
858
 
@@ -866,7 +866,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
866
866
  return result;
867
867
  }
868
868
 
869
- Py_DECREF(result);
869
+ Py_DECREF_IMMORTAL(result);
870
870
  }
871
871
 
872
872
  f = PyString_Type.tp_richcompare;
@@ -879,7 +879,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
879
879
  return result;
880
880
  }
881
881
 
882
- Py_DECREF(result);
882
+ Py_DECREF_IMMORTAL(result);
883
883
  }
884
884
 
885
885
  int c;
@@ -967,7 +967,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
967
967
 
968
968
  bool r = c != 0;
969
969
  PyObject *result = BOOL_FROM(r);
970
- Py_INCREF(result);
970
+ Py_INCREF_IMMORTAL(result);
971
971
  return result;
972
972
  #else
973
973
  bool checked_reverse_op = false;
@@ -987,7 +987,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
987
987
  return result;
988
988
  }
989
989
 
990
- Py_DECREF(result);
990
+ Py_DECREF_IMMORTAL(result);
991
991
  }
992
992
  }
993
993
 
@@ -1002,7 +1002,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
1002
1002
  return result;
1003
1003
  }
1004
1004
 
1005
- Py_DECREF(result);
1005
+ Py_DECREF_IMMORTAL(result);
1006
1006
  }
1007
1007
 
1008
1008
  if (checked_reverse_op == false) {
@@ -1017,7 +1017,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
1017
1017
  return result;
1018
1018
  }
1019
1019
 
1020
- Py_DECREF(result);
1020
+ Py_DECREF_IMMORTAL(result);
1021
1021
  }
1022
1022
  }
1023
1023
 
@@ -1029,13 +1029,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
1029
1029
  case Py_EQ: {
1030
1030
  bool r = operand1 == operand2;
1031
1031
  PyObject *result = BOOL_FROM(r);
1032
- Py_INCREF(result);
1032
+ Py_INCREF_IMMORTAL(result);
1033
1033
  return result;
1034
1034
  }
1035
1035
  case Py_NE: {
1036
1036
  bool r = operand1 != operand2;
1037
1037
  PyObject *result = BOOL_FROM(r);
1038
- Py_INCREF(result);
1038
+ Py_INCREF_IMMORTAL(result);
1039
1039
  return result;
1040
1040
  }
1041
1041
  default:
@@ -1085,7 +1085,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1085
1085
  return result;
1086
1086
  }
1087
1087
 
1088
- Py_DECREF(result);
1088
+ Py_DECREF_IMMORTAL(result);
1089
1089
  }
1090
1090
 
1091
1091
  // No rich comparison worked, but maybe compare works.
@@ -1126,7 +1126,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1126
1126
 
1127
1127
  bool r = c != 0;
1128
1128
  PyObject *result = BOOL_FROM(r);
1129
- Py_INCREF(result);
1129
+ Py_INCREF_IMMORTAL(result);
1130
1130
  return result;
1131
1131
  }
1132
1132
  }
@@ -1146,7 +1146,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1146
1146
  return result;
1147
1147
  }
1148
1148
 
1149
- Py_DECREF(result);
1149
+ Py_DECREF_IMMORTAL(result);
1150
1150
  }
1151
1151
  }
1152
1152
 
@@ -1160,7 +1160,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1160
1160
  return result;
1161
1161
  }
1162
1162
 
1163
- Py_DECREF(result);
1163
+ Py_DECREF_IMMORTAL(result);
1164
1164
  }
1165
1165
 
1166
1166
  f = RICHCOMPARE(type2);
@@ -1173,7 +1173,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1173
1173
  return result;
1174
1174
  }
1175
1175
 
1176
- Py_DECREF(result);
1176
+ Py_DECREF_IMMORTAL(result);
1177
1177
  }
1178
1178
 
1179
1179
  int c;
@@ -1261,7 +1261,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1261
1261
 
1262
1262
  bool r = c != 0;
1263
1263
  PyObject *result = BOOL_FROM(r);
1264
- Py_INCREF(result);
1264
+ Py_INCREF_IMMORTAL(result);
1265
1265
  return result;
1266
1266
  #else
1267
1267
  bool checked_reverse_op = false;
@@ -1281,7 +1281,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1281
1281
  return result;
1282
1282
  }
1283
1283
 
1284
- Py_DECREF(result);
1284
+ Py_DECREF_IMMORTAL(result);
1285
1285
  }
1286
1286
  }
1287
1287
 
@@ -1296,7 +1296,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1296
1296
  return result;
1297
1297
  }
1298
1298
 
1299
- Py_DECREF(result);
1299
+ Py_DECREF_IMMORTAL(result);
1300
1300
  }
1301
1301
 
1302
1302
  if (checked_reverse_op == false) {
@@ -1311,7 +1311,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1311
1311
  return result;
1312
1312
  }
1313
1313
 
1314
- Py_DECREF(result);
1314
+ Py_DECREF_IMMORTAL(result);
1315
1315
  }
1316
1316
  }
1317
1317
 
@@ -1323,13 +1323,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1323
1323
  case Py_EQ: {
1324
1324
  bool r = operand1 == operand2;
1325
1325
  PyObject *result = BOOL_FROM(r);
1326
- Py_INCREF(result);
1326
+ Py_INCREF_IMMORTAL(result);
1327
1327
  return result;
1328
1328
  }
1329
1329
  case Py_NE: {
1330
1330
  bool r = operand1 != operand2;
1331
1331
  PyObject *result = BOOL_FROM(r);
1332
- Py_INCREF(result);
1332
+ Py_INCREF_IMMORTAL(result);
1333
1333
  return result;
1334
1334
  }
1335
1335
  default:
@@ -1434,7 +1434,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1434
1434
  }
1435
1435
  }
1436
1436
 
1437
- Py_DECREF(result);
1437
+ Py_DECREF_IMMORTAL(result);
1438
1438
  }
1439
1439
 
1440
1440
  // No rich comparison worked, but maybe compare works.
@@ -1503,7 +1503,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1503
1503
  }
1504
1504
  }
1505
1505
 
1506
- Py_DECREF(result);
1506
+ Py_DECREF_IMMORTAL(result);
1507
1507
  }
1508
1508
  }
1509
1509
 
@@ -1525,7 +1525,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1525
1525
  }
1526
1526
  }
1527
1527
 
1528
- Py_DECREF(result);
1528
+ Py_DECREF_IMMORTAL(result);
1529
1529
  }
1530
1530
 
1531
1531
  f = PyString_Type.tp_richcompare;
@@ -1546,7 +1546,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1546
1546
  }
1547
1547
  }
1548
1548
 
1549
- Py_DECREF(result);
1549
+ Py_DECREF_IMMORTAL(result);
1550
1550
  }
1551
1551
 
1552
1552
  int c;
@@ -1662,7 +1662,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1662
1662
  }
1663
1663
  }
1664
1664
 
1665
- Py_DECREF(result);
1665
+ Py_DECREF_IMMORTAL(result);
1666
1666
  }
1667
1667
  }
1668
1668
 
@@ -1685,7 +1685,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1685
1685
  }
1686
1686
  }
1687
1687
 
1688
- Py_DECREF(result);
1688
+ Py_DECREF_IMMORTAL(result);
1689
1689
  }
1690
1690
 
1691
1691
  if (checked_reverse_op == false) {
@@ -1708,7 +1708,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1708
1708
  }
1709
1709
  }
1710
1710
 
1711
- Py_DECREF(result);
1711
+ Py_DECREF_IMMORTAL(result);
1712
1712
  }
1713
1713
  }
1714
1714
 
@@ -1784,7 +1784,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1784
1784
  }
1785
1785
  }
1786
1786
 
1787
- Py_DECREF(result);
1787
+ Py_DECREF_IMMORTAL(result);
1788
1788
  }
1789
1789
 
1790
1790
  // No rich comparison worked, but maybe compare works.
@@ -1853,7 +1853,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1853
1853
  }
1854
1854
  }
1855
1855
 
1856
- Py_DECREF(result);
1856
+ Py_DECREF_IMMORTAL(result);
1857
1857
  }
1858
1858
  }
1859
1859
 
@@ -1875,7 +1875,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1875
1875
  }
1876
1876
  }
1877
1877
 
1878
- Py_DECREF(result);
1878
+ Py_DECREF_IMMORTAL(result);
1879
1879
  }
1880
1880
 
1881
1881
  f = RICHCOMPARE(type2);
@@ -1896,7 +1896,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1896
1896
  }
1897
1897
  }
1898
1898
 
1899
- Py_DECREF(result);
1899
+ Py_DECREF_IMMORTAL(result);
1900
1900
  }
1901
1901
 
1902
1902
  int c;
@@ -2012,7 +2012,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
2012
2012
  }
2013
2013
  }
2014
2014
 
2015
- Py_DECREF(result);
2015
+ Py_DECREF_IMMORTAL(result);
2016
2016
  }
2017
2017
  }
2018
2018
 
@@ -2035,7 +2035,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
2035
2035
  }
2036
2036
  }
2037
2037
 
2038
- Py_DECREF(result);
2038
+ Py_DECREF_IMMORTAL(result);
2039
2039
  }
2040
2040
 
2041
2041
  if (checked_reverse_op == false) {
@@ -2058,7 +2058,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
2058
2058
  }
2059
2059
  }
2060
2060
 
2061
- Py_DECREF(result);
2061
+ Py_DECREF_IMMORTAL(result);
2062
2062
  }
2063
2063
  }
2064
2064
 
@@ -2106,7 +2106,7 @@ static PyObject *COMPARE_NE_OBJECT_UNICODE_UNICODE(PyObject *operand1, PyObject
2106
2106
 
2107
2107
  // Convert to target type.
2108
2108
  PyObject *result = BOOL_FROM(r);
2109
- Py_INCREF(result);
2109
+ Py_INCREF_IMMORTAL(result);
2110
2110
  return result;
2111
2111
  }
2112
2112
 
@@ -2149,7 +2149,7 @@ static PyObject *COMPARE_NE_OBJECT_UNICODE_UNICODE(PyObject *operand1, PyObject
2149
2149
  }
2150
2150
 
2151
2151
  PyObject *result = BOOL_FROM(r == false);
2152
- Py_INCREF(result);
2152
+ Py_INCREF_IMMORTAL(result);
2153
2153
  return result;
2154
2154
  #else
2155
2155
  bool r;
@@ -2166,7 +2166,7 @@ static PyObject *COMPARE_NE_OBJECT_UNICODE_UNICODE(PyObject *operand1, PyObject
2166
2166
  }
2167
2167
 
2168
2168
  PyObject *result = BOOL_FROM(r == false);
2169
- Py_INCREF(result);
2169
+ Py_INCREF_IMMORTAL(result);
2170
2170
  return result;
2171
2171
  #endif
2172
2172
  }
@@ -2204,7 +2204,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2204
2204
  return result;
2205
2205
  }
2206
2206
 
2207
- Py_DECREF(result);
2207
+ Py_DECREF_IMMORTAL(result);
2208
2208
  }
2209
2209
 
2210
2210
  // No rich comparison worked, but maybe compare works.
@@ -2245,7 +2245,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2245
2245
 
2246
2246
  bool r = c != 0;
2247
2247
  PyObject *result = BOOL_FROM(r);
2248
- Py_INCREF(result);
2248
+ Py_INCREF_IMMORTAL(result);
2249
2249
  return result;
2250
2250
  }
2251
2251
  }
@@ -2265,7 +2265,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2265
2265
  return result;
2266
2266
  }
2267
2267
 
2268
- Py_DECREF(result);
2268
+ Py_DECREF_IMMORTAL(result);
2269
2269
  }
2270
2270
  }
2271
2271
 
@@ -2279,7 +2279,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2279
2279
  return result;
2280
2280
  }
2281
2281
 
2282
- Py_DECREF(result);
2282
+ Py_DECREF_IMMORTAL(result);
2283
2283
  }
2284
2284
 
2285
2285
  f = PyUnicode_Type.tp_richcompare;
@@ -2292,7 +2292,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2292
2292
  return result;
2293
2293
  }
2294
2294
 
2295
- Py_DECREF(result);
2295
+ Py_DECREF_IMMORTAL(result);
2296
2296
  }
2297
2297
 
2298
2298
  int c;
@@ -2380,7 +2380,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2380
2380
 
2381
2381
  bool r = c != 0;
2382
2382
  PyObject *result = BOOL_FROM(r);
2383
- Py_INCREF(result);
2383
+ Py_INCREF_IMMORTAL(result);
2384
2384
  return result;
2385
2385
  #else
2386
2386
  bool checked_reverse_op = false;
@@ -2400,7 +2400,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2400
2400
  return result;
2401
2401
  }
2402
2402
 
2403
- Py_DECREF(result);
2403
+ Py_DECREF_IMMORTAL(result);
2404
2404
  }
2405
2405
  }
2406
2406
 
@@ -2415,7 +2415,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2415
2415
  return result;
2416
2416
  }
2417
2417
 
2418
- Py_DECREF(result);
2418
+ Py_DECREF_IMMORTAL(result);
2419
2419
  }
2420
2420
 
2421
2421
  if (checked_reverse_op == false) {
@@ -2430,7 +2430,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2430
2430
  return result;
2431
2431
  }
2432
2432
 
2433
- Py_DECREF(result);
2433
+ Py_DECREF_IMMORTAL(result);
2434
2434
  }
2435
2435
  }
2436
2436
 
@@ -2442,13 +2442,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2442
2442
  case Py_EQ: {
2443
2443
  bool r = operand1 == operand2;
2444
2444
  PyObject *result = BOOL_FROM(r);
2445
- Py_INCREF(result);
2445
+ Py_INCREF_IMMORTAL(result);
2446
2446
  return result;
2447
2447
  }
2448
2448
  case Py_NE: {
2449
2449
  bool r = operand1 != operand2;
2450
2450
  PyObject *result = BOOL_FROM(r);
2451
- Py_INCREF(result);
2451
+ Py_INCREF_IMMORTAL(result);
2452
2452
  return result;
2453
2453
  }
2454
2454
  default:
@@ -2498,7 +2498,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2498
2498
  return result;
2499
2499
  }
2500
2500
 
2501
- Py_DECREF(result);
2501
+ Py_DECREF_IMMORTAL(result);
2502
2502
  }
2503
2503
 
2504
2504
  // No rich comparison worked, but maybe compare works.
@@ -2539,7 +2539,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2539
2539
 
2540
2540
  bool r = c != 0;
2541
2541
  PyObject *result = BOOL_FROM(r);
2542
- Py_INCREF(result);
2542
+ Py_INCREF_IMMORTAL(result);
2543
2543
  return result;
2544
2544
  }
2545
2545
  }
@@ -2559,7 +2559,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2559
2559
  return result;
2560
2560
  }
2561
2561
 
2562
- Py_DECREF(result);
2562
+ Py_DECREF_IMMORTAL(result);
2563
2563
  }
2564
2564
  }
2565
2565
 
@@ -2573,7 +2573,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2573
2573
  return result;
2574
2574
  }
2575
2575
 
2576
- Py_DECREF(result);
2576
+ Py_DECREF_IMMORTAL(result);
2577
2577
  }
2578
2578
 
2579
2579
  f = RICHCOMPARE(type2);
@@ -2586,7 +2586,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2586
2586
  return result;
2587
2587
  }
2588
2588
 
2589
- Py_DECREF(result);
2589
+ Py_DECREF_IMMORTAL(result);
2590
2590
  }
2591
2591
 
2592
2592
  int c;
@@ -2674,7 +2674,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2674
2674
 
2675
2675
  bool r = c != 0;
2676
2676
  PyObject *result = BOOL_FROM(r);
2677
- Py_INCREF(result);
2677
+ Py_INCREF_IMMORTAL(result);
2678
2678
  return result;
2679
2679
  #else
2680
2680
  bool checked_reverse_op = false;
@@ -2694,7 +2694,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2694
2694
  return result;
2695
2695
  }
2696
2696
 
2697
- Py_DECREF(result);
2697
+ Py_DECREF_IMMORTAL(result);
2698
2698
  }
2699
2699
  }
2700
2700
 
@@ -2709,7 +2709,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2709
2709
  return result;
2710
2710
  }
2711
2711
 
2712
- Py_DECREF(result);
2712
+ Py_DECREF_IMMORTAL(result);
2713
2713
  }
2714
2714
 
2715
2715
  if (checked_reverse_op == false) {
@@ -2724,7 +2724,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2724
2724
  return result;
2725
2725
  }
2726
2726
 
2727
- Py_DECREF(result);
2727
+ Py_DECREF_IMMORTAL(result);
2728
2728
  }
2729
2729
  }
2730
2730
 
@@ -2736,13 +2736,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2736
2736
  case Py_EQ: {
2737
2737
  bool r = operand1 == operand2;
2738
2738
  PyObject *result = BOOL_FROM(r);
2739
- Py_INCREF(result);
2739
+ Py_INCREF_IMMORTAL(result);
2740
2740
  return result;
2741
2741
  }
2742
2742
  case Py_NE: {
2743
2743
  bool r = operand1 != operand2;
2744
2744
  PyObject *result = BOOL_FROM(r);
2745
- Py_INCREF(result);
2745
+ Py_INCREF_IMMORTAL(result);
2746
2746
  return result;
2747
2747
  }
2748
2748
  default:
@@ -2879,7 +2879,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2879
2879
  }
2880
2880
  }
2881
2881
 
2882
- Py_DECREF(result);
2882
+ Py_DECREF_IMMORTAL(result);
2883
2883
  }
2884
2884
 
2885
2885
  // No rich comparison worked, but maybe compare works.
@@ -2948,7 +2948,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2948
2948
  }
2949
2949
  }
2950
2950
 
2951
- Py_DECREF(result);
2951
+ Py_DECREF_IMMORTAL(result);
2952
2952
  }
2953
2953
  }
2954
2954
 
@@ -2970,7 +2970,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2970
2970
  }
2971
2971
  }
2972
2972
 
2973
- Py_DECREF(result);
2973
+ Py_DECREF_IMMORTAL(result);
2974
2974
  }
2975
2975
 
2976
2976
  f = PyUnicode_Type.tp_richcompare;
@@ -2991,7 +2991,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2991
2991
  }
2992
2992
  }
2993
2993
 
2994
- Py_DECREF(result);
2994
+ Py_DECREF_IMMORTAL(result);
2995
2995
  }
2996
2996
 
2997
2997
  int c;
@@ -3107,7 +3107,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
3107
3107
  }
3108
3108
  }
3109
3109
 
3110
- Py_DECREF(result);
3110
+ Py_DECREF_IMMORTAL(result);
3111
3111
  }
3112
3112
  }
3113
3113
 
@@ -3130,7 +3130,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
3130
3130
  }
3131
3131
  }
3132
3132
 
3133
- Py_DECREF(result);
3133
+ Py_DECREF_IMMORTAL(result);
3134
3134
  }
3135
3135
 
3136
3136
  if (checked_reverse_op == false) {
@@ -3153,7 +3153,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
3153
3153
  }
3154
3154
  }
3155
3155
 
3156
- Py_DECREF(result);
3156
+ Py_DECREF_IMMORTAL(result);
3157
3157
  }
3158
3158
  }
3159
3159
 
@@ -3229,7 +3229,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3229
3229
  }
3230
3230
  }
3231
3231
 
3232
- Py_DECREF(result);
3232
+ Py_DECREF_IMMORTAL(result);
3233
3233
  }
3234
3234
 
3235
3235
  // No rich comparison worked, but maybe compare works.
@@ -3298,7 +3298,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3298
3298
  }
3299
3299
  }
3300
3300
 
3301
- Py_DECREF(result);
3301
+ Py_DECREF_IMMORTAL(result);
3302
3302
  }
3303
3303
  }
3304
3304
 
@@ -3320,7 +3320,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3320
3320
  }
3321
3321
  }
3322
3322
 
3323
- Py_DECREF(result);
3323
+ Py_DECREF_IMMORTAL(result);
3324
3324
  }
3325
3325
 
3326
3326
  f = RICHCOMPARE(type2);
@@ -3341,7 +3341,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3341
3341
  }
3342
3342
  }
3343
3343
 
3344
- Py_DECREF(result);
3344
+ Py_DECREF_IMMORTAL(result);
3345
3345
  }
3346
3346
 
3347
3347
  int c;
@@ -3457,7 +3457,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3457
3457
  }
3458
3458
  }
3459
3459
 
3460
- Py_DECREF(result);
3460
+ Py_DECREF_IMMORTAL(result);
3461
3461
  }
3462
3462
  }
3463
3463
 
@@ -3480,7 +3480,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3480
3480
  }
3481
3481
  }
3482
3482
 
3483
- Py_DECREF(result);
3483
+ Py_DECREF_IMMORTAL(result);
3484
3484
  }
3485
3485
 
3486
3486
  if (checked_reverse_op == false) {
@@ -3503,7 +3503,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3503
3503
  }
3504
3504
  }
3505
3505
 
3506
- Py_DECREF(result);
3506
+ Py_DECREF_IMMORTAL(result);
3507
3507
  }
3508
3508
  }
3509
3509
 
@@ -3553,7 +3553,7 @@ static PyObject *COMPARE_NE_OBJECT_BYTES_BYTES(PyObject *operand1, PyObject *ope
3553
3553
 
3554
3554
  // Convert to target type.
3555
3555
  PyObject *result = BOOL_FROM(r);
3556
- Py_INCREF(result);
3556
+ Py_INCREF_IMMORTAL(result);
3557
3557
  return result;
3558
3558
  }
3559
3559
 
@@ -3565,7 +3565,7 @@ static PyObject *COMPARE_NE_OBJECT_BYTES_BYTES(PyObject *operand1, PyObject *ope
3565
3565
 
3566
3566
  // Convert to target type.
3567
3567
  PyObject *result = BOOL_FROM(r);
3568
- Py_INCREF(result);
3568
+ Py_INCREF_IMMORTAL(result);
3569
3569
  return result;
3570
3570
  } else {
3571
3571
  if ((a->ob_sval[0] == b->ob_sval[0]) && (memcmp(a->ob_sval, b->ob_sval, len_a) == 0)) {
@@ -3573,14 +3573,14 @@ static PyObject *COMPARE_NE_OBJECT_BYTES_BYTES(PyObject *operand1, PyObject *ope
3573
3573
 
3574
3574
  // Convert to target type.
3575
3575
  PyObject *result = BOOL_FROM(r);
3576
- Py_INCREF(result);
3576
+ Py_INCREF_IMMORTAL(result);
3577
3577
  return result;
3578
3578
  } else {
3579
3579
  bool r = true;
3580
3580
 
3581
3581
  // Convert to target type.
3582
3582
  PyObject *result = BOOL_FROM(r);
3583
- Py_INCREF(result);
3583
+ Py_INCREF_IMMORTAL(result);
3584
3584
  return result;
3585
3585
  }
3586
3586
  }
@@ -3619,7 +3619,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3619
3619
  return result;
3620
3620
  }
3621
3621
 
3622
- Py_DECREF(result);
3622
+ Py_DECREF_IMMORTAL(result);
3623
3623
  }
3624
3624
 
3625
3625
  // No rich comparison worked, but maybe compare works.
@@ -3660,7 +3660,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3660
3660
 
3661
3661
  bool r = c != 0;
3662
3662
  PyObject *result = BOOL_FROM(r);
3663
- Py_INCREF(result);
3663
+ Py_INCREF_IMMORTAL(result);
3664
3664
  return result;
3665
3665
  }
3666
3666
  }
@@ -3680,7 +3680,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3680
3680
  return result;
3681
3681
  }
3682
3682
 
3683
- Py_DECREF(result);
3683
+ Py_DECREF_IMMORTAL(result);
3684
3684
  }
3685
3685
  }
3686
3686
 
@@ -3694,7 +3694,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3694
3694
  return result;
3695
3695
  }
3696
3696
 
3697
- Py_DECREF(result);
3697
+ Py_DECREF_IMMORTAL(result);
3698
3698
  }
3699
3699
 
3700
3700
  f = PyBytes_Type.tp_richcompare;
@@ -3707,7 +3707,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3707
3707
  return result;
3708
3708
  }
3709
3709
 
3710
- Py_DECREF(result);
3710
+ Py_DECREF_IMMORTAL(result);
3711
3711
  }
3712
3712
 
3713
3713
  int c;
@@ -3795,7 +3795,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3795
3795
 
3796
3796
  bool r = c != 0;
3797
3797
  PyObject *result = BOOL_FROM(r);
3798
- Py_INCREF(result);
3798
+ Py_INCREF_IMMORTAL(result);
3799
3799
  return result;
3800
3800
  #else
3801
3801
  bool checked_reverse_op = false;
@@ -3815,7 +3815,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3815
3815
  return result;
3816
3816
  }
3817
3817
 
3818
- Py_DECREF(result);
3818
+ Py_DECREF_IMMORTAL(result);
3819
3819
  }
3820
3820
  }
3821
3821
 
@@ -3830,7 +3830,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3830
3830
  return result;
3831
3831
  }
3832
3832
 
3833
- Py_DECREF(result);
3833
+ Py_DECREF_IMMORTAL(result);
3834
3834
  }
3835
3835
 
3836
3836
  if (checked_reverse_op == false) {
@@ -3845,7 +3845,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3845
3845
  return result;
3846
3846
  }
3847
3847
 
3848
- Py_DECREF(result);
3848
+ Py_DECREF_IMMORTAL(result);
3849
3849
  }
3850
3850
  }
3851
3851
 
@@ -3857,13 +3857,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3857
3857
  case Py_EQ: {
3858
3858
  bool r = operand1 == operand2;
3859
3859
  PyObject *result = BOOL_FROM(r);
3860
- Py_INCREF(result);
3860
+ Py_INCREF_IMMORTAL(result);
3861
3861
  return result;
3862
3862
  }
3863
3863
  case Py_NE: {
3864
3864
  bool r = operand1 != operand2;
3865
3865
  PyObject *result = BOOL_FROM(r);
3866
- Py_INCREF(result);
3866
+ Py_INCREF_IMMORTAL(result);
3867
3867
  return result;
3868
3868
  }
3869
3869
  default:
@@ -3913,7 +3913,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3913
3913
  return result;
3914
3914
  }
3915
3915
 
3916
- Py_DECREF(result);
3916
+ Py_DECREF_IMMORTAL(result);
3917
3917
  }
3918
3918
 
3919
3919
  // No rich comparison worked, but maybe compare works.
@@ -3954,7 +3954,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3954
3954
 
3955
3955
  bool r = c != 0;
3956
3956
  PyObject *result = BOOL_FROM(r);
3957
- Py_INCREF(result);
3957
+ Py_INCREF_IMMORTAL(result);
3958
3958
  return result;
3959
3959
  }
3960
3960
  }
@@ -3974,7 +3974,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3974
3974
  return result;
3975
3975
  }
3976
3976
 
3977
- Py_DECREF(result);
3977
+ Py_DECREF_IMMORTAL(result);
3978
3978
  }
3979
3979
  }
3980
3980
 
@@ -3988,7 +3988,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3988
3988
  return result;
3989
3989
  }
3990
3990
 
3991
- Py_DECREF(result);
3991
+ Py_DECREF_IMMORTAL(result);
3992
3992
  }
3993
3993
 
3994
3994
  f = RICHCOMPARE(type2);
@@ -4001,7 +4001,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4001
4001
  return result;
4002
4002
  }
4003
4003
 
4004
- Py_DECREF(result);
4004
+ Py_DECREF_IMMORTAL(result);
4005
4005
  }
4006
4006
 
4007
4007
  int c;
@@ -4089,7 +4089,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4089
4089
 
4090
4090
  bool r = c != 0;
4091
4091
  PyObject *result = BOOL_FROM(r);
4092
- Py_INCREF(result);
4092
+ Py_INCREF_IMMORTAL(result);
4093
4093
  return result;
4094
4094
  #else
4095
4095
  bool checked_reverse_op = false;
@@ -4109,7 +4109,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4109
4109
  return result;
4110
4110
  }
4111
4111
 
4112
- Py_DECREF(result);
4112
+ Py_DECREF_IMMORTAL(result);
4113
4113
  }
4114
4114
  }
4115
4115
 
@@ -4124,7 +4124,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4124
4124
  return result;
4125
4125
  }
4126
4126
 
4127
- Py_DECREF(result);
4127
+ Py_DECREF_IMMORTAL(result);
4128
4128
  }
4129
4129
 
4130
4130
  if (checked_reverse_op == false) {
@@ -4139,7 +4139,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4139
4139
  return result;
4140
4140
  }
4141
4141
 
4142
- Py_DECREF(result);
4142
+ Py_DECREF_IMMORTAL(result);
4143
4143
  }
4144
4144
  }
4145
4145
 
@@ -4151,13 +4151,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4151
4151
  case Py_EQ: {
4152
4152
  bool r = operand1 == operand2;
4153
4153
  PyObject *result = BOOL_FROM(r);
4154
- Py_INCREF(result);
4154
+ Py_INCREF_IMMORTAL(result);
4155
4155
  return result;
4156
4156
  }
4157
4157
  case Py_NE: {
4158
4158
  bool r = operand1 != operand2;
4159
4159
  PyObject *result = BOOL_FROM(r);
4160
- Py_INCREF(result);
4160
+ Py_INCREF_IMMORTAL(result);
4161
4161
  return result;
4162
4162
  }
4163
4163
  default:
@@ -4262,7 +4262,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4262
4262
  }
4263
4263
  }
4264
4264
 
4265
- Py_DECREF(result);
4265
+ Py_DECREF_IMMORTAL(result);
4266
4266
  }
4267
4267
 
4268
4268
  // No rich comparison worked, but maybe compare works.
@@ -4331,7 +4331,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4331
4331
  }
4332
4332
  }
4333
4333
 
4334
- Py_DECREF(result);
4334
+ Py_DECREF_IMMORTAL(result);
4335
4335
  }
4336
4336
  }
4337
4337
 
@@ -4353,7 +4353,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4353
4353
  }
4354
4354
  }
4355
4355
 
4356
- Py_DECREF(result);
4356
+ Py_DECREF_IMMORTAL(result);
4357
4357
  }
4358
4358
 
4359
4359
  f = PyBytes_Type.tp_richcompare;
@@ -4374,7 +4374,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4374
4374
  }
4375
4375
  }
4376
4376
 
4377
- Py_DECREF(result);
4377
+ Py_DECREF_IMMORTAL(result);
4378
4378
  }
4379
4379
 
4380
4380
  int c;
@@ -4490,7 +4490,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4490
4490
  }
4491
4491
  }
4492
4492
 
4493
- Py_DECREF(result);
4493
+ Py_DECREF_IMMORTAL(result);
4494
4494
  }
4495
4495
  }
4496
4496
 
@@ -4513,7 +4513,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4513
4513
  }
4514
4514
  }
4515
4515
 
4516
- Py_DECREF(result);
4516
+ Py_DECREF_IMMORTAL(result);
4517
4517
  }
4518
4518
 
4519
4519
  if (checked_reverse_op == false) {
@@ -4536,7 +4536,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4536
4536
  }
4537
4537
  }
4538
4538
 
4539
- Py_DECREF(result);
4539
+ Py_DECREF_IMMORTAL(result);
4540
4540
  }
4541
4541
  }
4542
4542
 
@@ -4612,7 +4612,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4612
4612
  }
4613
4613
  }
4614
4614
 
4615
- Py_DECREF(result);
4615
+ Py_DECREF_IMMORTAL(result);
4616
4616
  }
4617
4617
 
4618
4618
  // No rich comparison worked, but maybe compare works.
@@ -4681,7 +4681,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4681
4681
  }
4682
4682
  }
4683
4683
 
4684
- Py_DECREF(result);
4684
+ Py_DECREF_IMMORTAL(result);
4685
4685
  }
4686
4686
  }
4687
4687
 
@@ -4703,7 +4703,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4703
4703
  }
4704
4704
  }
4705
4705
 
4706
- Py_DECREF(result);
4706
+ Py_DECREF_IMMORTAL(result);
4707
4707
  }
4708
4708
 
4709
4709
  f = RICHCOMPARE(type2);
@@ -4724,7 +4724,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4724
4724
  }
4725
4725
  }
4726
4726
 
4727
- Py_DECREF(result);
4727
+ Py_DECREF_IMMORTAL(result);
4728
4728
  }
4729
4729
 
4730
4730
  int c;
@@ -4840,7 +4840,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4840
4840
  }
4841
4841
  }
4842
4842
 
4843
- Py_DECREF(result);
4843
+ Py_DECREF_IMMORTAL(result);
4844
4844
  }
4845
4845
  }
4846
4846
 
@@ -4863,7 +4863,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4863
4863
  }
4864
4864
  }
4865
4865
 
4866
- Py_DECREF(result);
4866
+ Py_DECREF_IMMORTAL(result);
4867
4867
  }
4868
4868
 
4869
4869
  if (checked_reverse_op == false) {
@@ -4886,7 +4886,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4886
4886
  }
4887
4887
  }
4888
4888
 
4889
- Py_DECREF(result);
4889
+ Py_DECREF_IMMORTAL(result);
4890
4890
  }
4891
4891
  }
4892
4892
 
@@ -4954,7 +4954,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4954
4954
  return result;
4955
4955
  }
4956
4956
 
4957
- Py_DECREF(result);
4957
+ Py_DECREF_IMMORTAL(result);
4958
4958
  }
4959
4959
 
4960
4960
  // No rich comparison worked, but maybe compare works.
@@ -4995,7 +4995,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4995
4995
 
4996
4996
  bool r = c != 0;
4997
4997
  PyObject *result = BOOL_FROM(r);
4998
- Py_INCREF(result);
4998
+ Py_INCREF_IMMORTAL(result);
4999
4999
  return result;
5000
5000
  }
5001
5001
  }
@@ -5015,7 +5015,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5015
5015
  return result;
5016
5016
  }
5017
5017
 
5018
- Py_DECREF(result);
5018
+ Py_DECREF_IMMORTAL(result);
5019
5019
  }
5020
5020
  }
5021
5021
 
@@ -5029,7 +5029,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5029
5029
  return result;
5030
5030
  }
5031
5031
 
5032
- Py_DECREF(result);
5032
+ Py_DECREF_IMMORTAL(result);
5033
5033
  }
5034
5034
 
5035
5035
  f = NULL;
@@ -5042,7 +5042,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5042
5042
  return result;
5043
5043
  }
5044
5044
 
5045
- Py_DECREF(result);
5045
+ Py_DECREF_IMMORTAL(result);
5046
5046
  }
5047
5047
 
5048
5048
  int c;
@@ -5130,7 +5130,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5130
5130
 
5131
5131
  bool r = c != 0;
5132
5132
  PyObject *result = BOOL_FROM(r);
5133
- Py_INCREF(result);
5133
+ Py_INCREF_IMMORTAL(result);
5134
5134
  return result;
5135
5135
  #else
5136
5136
  bool checked_reverse_op = false;
@@ -5150,7 +5150,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5150
5150
  return result;
5151
5151
  }
5152
5152
 
5153
- Py_DECREF(result);
5153
+ Py_DECREF_IMMORTAL(result);
5154
5154
  }
5155
5155
  }
5156
5156
 
@@ -5165,7 +5165,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5165
5165
  return result;
5166
5166
  }
5167
5167
 
5168
- Py_DECREF(result);
5168
+ Py_DECREF_IMMORTAL(result);
5169
5169
  }
5170
5170
 
5171
5171
  if (checked_reverse_op == false) {
@@ -5180,7 +5180,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5180
5180
  return result;
5181
5181
  }
5182
5182
 
5183
- Py_DECREF(result);
5183
+ Py_DECREF_IMMORTAL(result);
5184
5184
  }
5185
5185
  }
5186
5186
 
@@ -5192,13 +5192,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5192
5192
  case Py_EQ: {
5193
5193
  bool r = operand1 == operand2;
5194
5194
  PyObject *result = BOOL_FROM(r);
5195
- Py_INCREF(result);
5195
+ Py_INCREF_IMMORTAL(result);
5196
5196
  return result;
5197
5197
  }
5198
5198
  case Py_NE: {
5199
5199
  bool r = operand1 != operand2;
5200
5200
  PyObject *result = BOOL_FROM(r);
5201
- Py_INCREF(result);
5201
+ Py_INCREF_IMMORTAL(result);
5202
5202
  return result;
5203
5203
  }
5204
5204
  default:
@@ -5248,7 +5248,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5248
5248
  return result;
5249
5249
  }
5250
5250
 
5251
- Py_DECREF(result);
5251
+ Py_DECREF_IMMORTAL(result);
5252
5252
  }
5253
5253
 
5254
5254
  // No rich comparison worked, but maybe compare works.
@@ -5289,7 +5289,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5289
5289
 
5290
5290
  bool r = c != 0;
5291
5291
  PyObject *result = BOOL_FROM(r);
5292
- Py_INCREF(result);
5292
+ Py_INCREF_IMMORTAL(result);
5293
5293
  return result;
5294
5294
  }
5295
5295
  }
@@ -5309,7 +5309,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5309
5309
  return result;
5310
5310
  }
5311
5311
 
5312
- Py_DECREF(result);
5312
+ Py_DECREF_IMMORTAL(result);
5313
5313
  }
5314
5314
  }
5315
5315
 
@@ -5323,7 +5323,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5323
5323
  return result;
5324
5324
  }
5325
5325
 
5326
- Py_DECREF(result);
5326
+ Py_DECREF_IMMORTAL(result);
5327
5327
  }
5328
5328
 
5329
5329
  f = RICHCOMPARE(type2);
@@ -5336,7 +5336,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5336
5336
  return result;
5337
5337
  }
5338
5338
 
5339
- Py_DECREF(result);
5339
+ Py_DECREF_IMMORTAL(result);
5340
5340
  }
5341
5341
 
5342
5342
  int c;
@@ -5424,7 +5424,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5424
5424
 
5425
5425
  bool r = c != 0;
5426
5426
  PyObject *result = BOOL_FROM(r);
5427
- Py_INCREF(result);
5427
+ Py_INCREF_IMMORTAL(result);
5428
5428
  return result;
5429
5429
  #else
5430
5430
  bool checked_reverse_op = false;
@@ -5444,7 +5444,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5444
5444
  return result;
5445
5445
  }
5446
5446
 
5447
- Py_DECREF(result);
5447
+ Py_DECREF_IMMORTAL(result);
5448
5448
  }
5449
5449
  }
5450
5450
 
@@ -5459,7 +5459,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5459
5459
  return result;
5460
5460
  }
5461
5461
 
5462
- Py_DECREF(result);
5462
+ Py_DECREF_IMMORTAL(result);
5463
5463
  }
5464
5464
 
5465
5465
  if (checked_reverse_op == false) {
@@ -5474,7 +5474,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5474
5474
  return result;
5475
5475
  }
5476
5476
 
5477
- Py_DECREF(result);
5477
+ Py_DECREF_IMMORTAL(result);
5478
5478
  }
5479
5479
  }
5480
5480
 
@@ -5486,13 +5486,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5486
5486
  case Py_EQ: {
5487
5487
  bool r = operand1 == operand2;
5488
5488
  PyObject *result = BOOL_FROM(r);
5489
- Py_INCREF(result);
5489
+ Py_INCREF_IMMORTAL(result);
5490
5490
  return result;
5491
5491
  }
5492
5492
  case Py_NE: {
5493
5493
  bool r = operand1 != operand2;
5494
5494
  PyObject *result = BOOL_FROM(r);
5495
- Py_INCREF(result);
5495
+ Py_INCREF_IMMORTAL(result);
5496
5496
  return result;
5497
5497
  }
5498
5498
  default:
@@ -5550,7 +5550,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5550
5550
  }
5551
5551
  }
5552
5552
 
5553
- Py_DECREF(result);
5553
+ Py_DECREF_IMMORTAL(result);
5554
5554
  }
5555
5555
 
5556
5556
  // No rich comparison worked, but maybe compare works.
@@ -5619,7 +5619,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5619
5619
  }
5620
5620
  }
5621
5621
 
5622
- Py_DECREF(result);
5622
+ Py_DECREF_IMMORTAL(result);
5623
5623
  }
5624
5624
  }
5625
5625
 
@@ -5641,7 +5641,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5641
5641
  }
5642
5642
  }
5643
5643
 
5644
- Py_DECREF(result);
5644
+ Py_DECREF_IMMORTAL(result);
5645
5645
  }
5646
5646
 
5647
5647
  f = NULL;
@@ -5662,7 +5662,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5662
5662
  }
5663
5663
  }
5664
5664
 
5665
- Py_DECREF(result);
5665
+ Py_DECREF_IMMORTAL(result);
5666
5666
  }
5667
5667
 
5668
5668
  int c;
@@ -5778,7 +5778,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5778
5778
  }
5779
5779
  }
5780
5780
 
5781
- Py_DECREF(result);
5781
+ Py_DECREF_IMMORTAL(result);
5782
5782
  }
5783
5783
  }
5784
5784
 
@@ -5801,7 +5801,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5801
5801
  }
5802
5802
  }
5803
5803
 
5804
- Py_DECREF(result);
5804
+ Py_DECREF_IMMORTAL(result);
5805
5805
  }
5806
5806
 
5807
5807
  if (checked_reverse_op == false) {
@@ -5824,7 +5824,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5824
5824
  }
5825
5825
  }
5826
5826
 
5827
- Py_DECREF(result);
5827
+ Py_DECREF_IMMORTAL(result);
5828
5828
  }
5829
5829
  }
5830
5830
 
@@ -5900,7 +5900,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5900
5900
  }
5901
5901
  }
5902
5902
 
5903
- Py_DECREF(result);
5903
+ Py_DECREF_IMMORTAL(result);
5904
5904
  }
5905
5905
 
5906
5906
  // No rich comparison worked, but maybe compare works.
@@ -5969,7 +5969,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5969
5969
  }
5970
5970
  }
5971
5971
 
5972
- Py_DECREF(result);
5972
+ Py_DECREF_IMMORTAL(result);
5973
5973
  }
5974
5974
  }
5975
5975
 
@@ -5991,7 +5991,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5991
5991
  }
5992
5992
  }
5993
5993
 
5994
- Py_DECREF(result);
5994
+ Py_DECREF_IMMORTAL(result);
5995
5995
  }
5996
5996
 
5997
5997
  f = RICHCOMPARE(type2);
@@ -6012,7 +6012,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6012
6012
  }
6013
6013
  }
6014
6014
 
6015
- Py_DECREF(result);
6015
+ Py_DECREF_IMMORTAL(result);
6016
6016
  }
6017
6017
 
6018
6018
  int c;
@@ -6128,7 +6128,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6128
6128
  }
6129
6129
  }
6130
6130
 
6131
- Py_DECREF(result);
6131
+ Py_DECREF_IMMORTAL(result);
6132
6132
  }
6133
6133
  }
6134
6134
 
@@ -6151,7 +6151,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6151
6151
  }
6152
6152
  }
6153
6153
 
6154
- Py_DECREF(result);
6154
+ Py_DECREF_IMMORTAL(result);
6155
6155
  }
6156
6156
 
6157
6157
  if (checked_reverse_op == false) {
@@ -6174,7 +6174,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6174
6174
  }
6175
6175
  }
6176
6176
 
6177
- Py_DECREF(result);
6177
+ Py_DECREF_IMMORTAL(result);
6178
6178
  }
6179
6179
  }
6180
6180
 
@@ -6238,7 +6238,7 @@ static PyObject *COMPARE_NE_OBJECT_LONG_LONG(PyObject *operand1, PyObject *opera
6238
6238
 
6239
6239
  // Convert to target type.
6240
6240
  PyObject *result = BOOL_FROM(r);
6241
- Py_INCREF(result);
6241
+ Py_INCREF_IMMORTAL(result);
6242
6242
  return result;
6243
6243
  }
6244
6244
  /* Code referring to "OBJECT" corresponds to any Python object and "LONG" to Python2 'long', Python3 'int'. */
@@ -6275,7 +6275,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6275
6275
  return result;
6276
6276
  }
6277
6277
 
6278
- Py_DECREF(result);
6278
+ Py_DECREF_IMMORTAL(result);
6279
6279
  }
6280
6280
 
6281
6281
  // No rich comparison worked, but maybe compare works.
@@ -6316,7 +6316,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6316
6316
 
6317
6317
  bool r = c != 0;
6318
6318
  PyObject *result = BOOL_FROM(r);
6319
- Py_INCREF(result);
6319
+ Py_INCREF_IMMORTAL(result);
6320
6320
  return result;
6321
6321
  }
6322
6322
  }
@@ -6336,7 +6336,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6336
6336
  return result;
6337
6337
  }
6338
6338
 
6339
- Py_DECREF(result);
6339
+ Py_DECREF_IMMORTAL(result);
6340
6340
  }
6341
6341
  }
6342
6342
 
@@ -6350,7 +6350,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6350
6350
  return result;
6351
6351
  }
6352
6352
 
6353
- Py_DECREF(result);
6353
+ Py_DECREF_IMMORTAL(result);
6354
6354
  }
6355
6355
 
6356
6356
  f = (PYTHON_VERSION < 0x300 ? NULL : PyLong_Type.tp_richcompare);
@@ -6363,7 +6363,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6363
6363
  return result;
6364
6364
  }
6365
6365
 
6366
- Py_DECREF(result);
6366
+ Py_DECREF_IMMORTAL(result);
6367
6367
  }
6368
6368
 
6369
6369
  int c;
@@ -6451,7 +6451,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6451
6451
 
6452
6452
  bool r = c != 0;
6453
6453
  PyObject *result = BOOL_FROM(r);
6454
- Py_INCREF(result);
6454
+ Py_INCREF_IMMORTAL(result);
6455
6455
  return result;
6456
6456
  #else
6457
6457
  bool checked_reverse_op = false;
@@ -6471,7 +6471,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6471
6471
  return result;
6472
6472
  }
6473
6473
 
6474
- Py_DECREF(result);
6474
+ Py_DECREF_IMMORTAL(result);
6475
6475
  }
6476
6476
  }
6477
6477
 
@@ -6486,7 +6486,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6486
6486
  return result;
6487
6487
  }
6488
6488
 
6489
- Py_DECREF(result);
6489
+ Py_DECREF_IMMORTAL(result);
6490
6490
  }
6491
6491
 
6492
6492
  if (checked_reverse_op == false) {
@@ -6501,7 +6501,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6501
6501
  return result;
6502
6502
  }
6503
6503
 
6504
- Py_DECREF(result);
6504
+ Py_DECREF_IMMORTAL(result);
6505
6505
  }
6506
6506
  }
6507
6507
 
@@ -6513,13 +6513,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6513
6513
  case Py_EQ: {
6514
6514
  bool r = operand1 == operand2;
6515
6515
  PyObject *result = BOOL_FROM(r);
6516
- Py_INCREF(result);
6516
+ Py_INCREF_IMMORTAL(result);
6517
6517
  return result;
6518
6518
  }
6519
6519
  case Py_NE: {
6520
6520
  bool r = operand1 != operand2;
6521
6521
  PyObject *result = BOOL_FROM(r);
6522
- Py_INCREF(result);
6522
+ Py_INCREF_IMMORTAL(result);
6523
6523
  return result;
6524
6524
  }
6525
6525
  default:
@@ -6569,7 +6569,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6569
6569
  return result;
6570
6570
  }
6571
6571
 
6572
- Py_DECREF(result);
6572
+ Py_DECREF_IMMORTAL(result);
6573
6573
  }
6574
6574
 
6575
6575
  // No rich comparison worked, but maybe compare works.
@@ -6610,7 +6610,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6610
6610
 
6611
6611
  bool r = c != 0;
6612
6612
  PyObject *result = BOOL_FROM(r);
6613
- Py_INCREF(result);
6613
+ Py_INCREF_IMMORTAL(result);
6614
6614
  return result;
6615
6615
  }
6616
6616
  }
@@ -6630,7 +6630,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6630
6630
  return result;
6631
6631
  }
6632
6632
 
6633
- Py_DECREF(result);
6633
+ Py_DECREF_IMMORTAL(result);
6634
6634
  }
6635
6635
  }
6636
6636
 
@@ -6644,7 +6644,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6644
6644
  return result;
6645
6645
  }
6646
6646
 
6647
- Py_DECREF(result);
6647
+ Py_DECREF_IMMORTAL(result);
6648
6648
  }
6649
6649
 
6650
6650
  f = RICHCOMPARE(type2);
@@ -6657,7 +6657,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6657
6657
  return result;
6658
6658
  }
6659
6659
 
6660
- Py_DECREF(result);
6660
+ Py_DECREF_IMMORTAL(result);
6661
6661
  }
6662
6662
 
6663
6663
  int c;
@@ -6745,7 +6745,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6745
6745
 
6746
6746
  bool r = c != 0;
6747
6747
  PyObject *result = BOOL_FROM(r);
6748
- Py_INCREF(result);
6748
+ Py_INCREF_IMMORTAL(result);
6749
6749
  return result;
6750
6750
  #else
6751
6751
  bool checked_reverse_op = false;
@@ -6765,7 +6765,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6765
6765
  return result;
6766
6766
  }
6767
6767
 
6768
- Py_DECREF(result);
6768
+ Py_DECREF_IMMORTAL(result);
6769
6769
  }
6770
6770
  }
6771
6771
 
@@ -6780,7 +6780,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6780
6780
  return result;
6781
6781
  }
6782
6782
 
6783
- Py_DECREF(result);
6783
+ Py_DECREF_IMMORTAL(result);
6784
6784
  }
6785
6785
 
6786
6786
  if (checked_reverse_op == false) {
@@ -6795,7 +6795,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6795
6795
  return result;
6796
6796
  }
6797
6797
 
6798
- Py_DECREF(result);
6798
+ Py_DECREF_IMMORTAL(result);
6799
6799
  }
6800
6800
  }
6801
6801
 
@@ -6807,13 +6807,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6807
6807
  case Py_EQ: {
6808
6808
  bool r = operand1 == operand2;
6809
6809
  PyObject *result = BOOL_FROM(r);
6810
- Py_INCREF(result);
6810
+ Py_INCREF_IMMORTAL(result);
6811
6811
  return result;
6812
6812
  }
6813
6813
  case Py_NE: {
6814
6814
  bool r = operand1 != operand2;
6815
6815
  PyObject *result = BOOL_FROM(r);
6816
- Py_INCREF(result);
6816
+ Py_INCREF_IMMORTAL(result);
6817
6817
  return result;
6818
6818
  }
6819
6819
  default:
@@ -6905,7 +6905,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6905
6905
  }
6906
6906
  }
6907
6907
 
6908
- Py_DECREF(result);
6908
+ Py_DECREF_IMMORTAL(result);
6909
6909
  }
6910
6910
 
6911
6911
  // No rich comparison worked, but maybe compare works.
@@ -6974,7 +6974,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6974
6974
  }
6975
6975
  }
6976
6976
 
6977
- Py_DECREF(result);
6977
+ Py_DECREF_IMMORTAL(result);
6978
6978
  }
6979
6979
  }
6980
6980
 
@@ -6996,7 +6996,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6996
6996
  }
6997
6997
  }
6998
6998
 
6999
- Py_DECREF(result);
6999
+ Py_DECREF_IMMORTAL(result);
7000
7000
  }
7001
7001
 
7002
7002
  f = (PYTHON_VERSION < 0x300 ? NULL : PyLong_Type.tp_richcompare);
@@ -7017,7 +7017,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7017
7017
  }
7018
7018
  }
7019
7019
 
7020
- Py_DECREF(result);
7020
+ Py_DECREF_IMMORTAL(result);
7021
7021
  }
7022
7022
 
7023
7023
  int c;
@@ -7133,7 +7133,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7133
7133
  }
7134
7134
  }
7135
7135
 
7136
- Py_DECREF(result);
7136
+ Py_DECREF_IMMORTAL(result);
7137
7137
  }
7138
7138
  }
7139
7139
 
@@ -7156,7 +7156,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7156
7156
  }
7157
7157
  }
7158
7158
 
7159
- Py_DECREF(result);
7159
+ Py_DECREF_IMMORTAL(result);
7160
7160
  }
7161
7161
 
7162
7162
  if (checked_reverse_op == false) {
@@ -7179,7 +7179,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7179
7179
  }
7180
7180
  }
7181
7181
 
7182
- Py_DECREF(result);
7182
+ Py_DECREF_IMMORTAL(result);
7183
7183
  }
7184
7184
  }
7185
7185
 
@@ -7255,7 +7255,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7255
7255
  }
7256
7256
  }
7257
7257
 
7258
- Py_DECREF(result);
7258
+ Py_DECREF_IMMORTAL(result);
7259
7259
  }
7260
7260
 
7261
7261
  // No rich comparison worked, but maybe compare works.
@@ -7324,7 +7324,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7324
7324
  }
7325
7325
  }
7326
7326
 
7327
- Py_DECREF(result);
7327
+ Py_DECREF_IMMORTAL(result);
7328
7328
  }
7329
7329
  }
7330
7330
 
@@ -7346,7 +7346,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7346
7346
  }
7347
7347
  }
7348
7348
 
7349
- Py_DECREF(result);
7349
+ Py_DECREF_IMMORTAL(result);
7350
7350
  }
7351
7351
 
7352
7352
  f = RICHCOMPARE(type2);
@@ -7367,7 +7367,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7367
7367
  }
7368
7368
  }
7369
7369
 
7370
- Py_DECREF(result);
7370
+ Py_DECREF_IMMORTAL(result);
7371
7371
  }
7372
7372
 
7373
7373
  int c;
@@ -7483,7 +7483,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7483
7483
  }
7484
7484
  }
7485
7485
 
7486
- Py_DECREF(result);
7486
+ Py_DECREF_IMMORTAL(result);
7487
7487
  }
7488
7488
  }
7489
7489
 
@@ -7506,7 +7506,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7506
7506
  }
7507
7507
  }
7508
7508
 
7509
- Py_DECREF(result);
7509
+ Py_DECREF_IMMORTAL(result);
7510
7510
  }
7511
7511
 
7512
7512
  if (checked_reverse_op == false) {
@@ -7529,7 +7529,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7529
7529
  }
7530
7530
  }
7531
7531
 
7532
- Py_DECREF(result);
7532
+ Py_DECREF_IMMORTAL(result);
7533
7533
  }
7534
7534
  }
7535
7535
 
@@ -7576,7 +7576,7 @@ static PyObject *COMPARE_NE_OBJECT_FLOAT_FLOAT(PyObject *operand1, PyObject *ope
7576
7576
 
7577
7577
  // Convert to target type.
7578
7578
  PyObject *result = BOOL_FROM(r);
7579
- Py_INCREF(result);
7579
+ Py_INCREF_IMMORTAL(result);
7580
7580
  return result;
7581
7581
  }
7582
7582
  /* Code referring to "OBJECT" corresponds to any Python object and "FLOAT" to Python 'float'. */
@@ -7613,7 +7613,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7613
7613
  return result;
7614
7614
  }
7615
7615
 
7616
- Py_DECREF(result);
7616
+ Py_DECREF_IMMORTAL(result);
7617
7617
  }
7618
7618
 
7619
7619
  // No rich comparison worked, but maybe compare works.
@@ -7654,7 +7654,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7654
7654
 
7655
7655
  bool r = c != 0;
7656
7656
  PyObject *result = BOOL_FROM(r);
7657
- Py_INCREF(result);
7657
+ Py_INCREF_IMMORTAL(result);
7658
7658
  return result;
7659
7659
  }
7660
7660
  }
@@ -7674,7 +7674,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7674
7674
  return result;
7675
7675
  }
7676
7676
 
7677
- Py_DECREF(result);
7677
+ Py_DECREF_IMMORTAL(result);
7678
7678
  }
7679
7679
  }
7680
7680
 
@@ -7688,7 +7688,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7688
7688
  return result;
7689
7689
  }
7690
7690
 
7691
- Py_DECREF(result);
7691
+ Py_DECREF_IMMORTAL(result);
7692
7692
  }
7693
7693
 
7694
7694
  f = PyFloat_Type.tp_richcompare;
@@ -7701,7 +7701,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7701
7701
  return result;
7702
7702
  }
7703
7703
 
7704
- Py_DECREF(result);
7704
+ Py_DECREF_IMMORTAL(result);
7705
7705
  }
7706
7706
 
7707
7707
  int c;
@@ -7789,7 +7789,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7789
7789
 
7790
7790
  bool r = c != 0;
7791
7791
  PyObject *result = BOOL_FROM(r);
7792
- Py_INCREF(result);
7792
+ Py_INCREF_IMMORTAL(result);
7793
7793
  return result;
7794
7794
  #else
7795
7795
  bool checked_reverse_op = false;
@@ -7809,7 +7809,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7809
7809
  return result;
7810
7810
  }
7811
7811
 
7812
- Py_DECREF(result);
7812
+ Py_DECREF_IMMORTAL(result);
7813
7813
  }
7814
7814
  }
7815
7815
 
@@ -7824,7 +7824,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7824
7824
  return result;
7825
7825
  }
7826
7826
 
7827
- Py_DECREF(result);
7827
+ Py_DECREF_IMMORTAL(result);
7828
7828
  }
7829
7829
 
7830
7830
  if (checked_reverse_op == false) {
@@ -7839,7 +7839,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7839
7839
  return result;
7840
7840
  }
7841
7841
 
7842
- Py_DECREF(result);
7842
+ Py_DECREF_IMMORTAL(result);
7843
7843
  }
7844
7844
  }
7845
7845
 
@@ -7851,13 +7851,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7851
7851
  case Py_EQ: {
7852
7852
  bool r = operand1 == operand2;
7853
7853
  PyObject *result = BOOL_FROM(r);
7854
- Py_INCREF(result);
7854
+ Py_INCREF_IMMORTAL(result);
7855
7855
  return result;
7856
7856
  }
7857
7857
  case Py_NE: {
7858
7858
  bool r = operand1 != operand2;
7859
7859
  PyObject *result = BOOL_FROM(r);
7860
- Py_INCREF(result);
7860
+ Py_INCREF_IMMORTAL(result);
7861
7861
  return result;
7862
7862
  }
7863
7863
  default:
@@ -7905,7 +7905,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7905
7905
  return result;
7906
7906
  }
7907
7907
 
7908
- Py_DECREF(result);
7908
+ Py_DECREF_IMMORTAL(result);
7909
7909
  }
7910
7910
 
7911
7911
  // No rich comparison worked, but maybe compare works.
@@ -7946,7 +7946,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7946
7946
 
7947
7947
  bool r = c != 0;
7948
7948
  PyObject *result = BOOL_FROM(r);
7949
- Py_INCREF(result);
7949
+ Py_INCREF_IMMORTAL(result);
7950
7950
  return result;
7951
7951
  }
7952
7952
  }
@@ -7966,7 +7966,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7966
7966
  return result;
7967
7967
  }
7968
7968
 
7969
- Py_DECREF(result);
7969
+ Py_DECREF_IMMORTAL(result);
7970
7970
  }
7971
7971
  }
7972
7972
 
@@ -7980,7 +7980,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7980
7980
  return result;
7981
7981
  }
7982
7982
 
7983
- Py_DECREF(result);
7983
+ Py_DECREF_IMMORTAL(result);
7984
7984
  }
7985
7985
 
7986
7986
  f = RICHCOMPARE(type2);
@@ -7993,7 +7993,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7993
7993
  return result;
7994
7994
  }
7995
7995
 
7996
- Py_DECREF(result);
7996
+ Py_DECREF_IMMORTAL(result);
7997
7997
  }
7998
7998
 
7999
7999
  int c;
@@ -8081,7 +8081,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8081
8081
 
8082
8082
  bool r = c != 0;
8083
8083
  PyObject *result = BOOL_FROM(r);
8084
- Py_INCREF(result);
8084
+ Py_INCREF_IMMORTAL(result);
8085
8085
  return result;
8086
8086
  #else
8087
8087
  bool checked_reverse_op = false;
@@ -8101,7 +8101,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8101
8101
  return result;
8102
8102
  }
8103
8103
 
8104
- Py_DECREF(result);
8104
+ Py_DECREF_IMMORTAL(result);
8105
8105
  }
8106
8106
  }
8107
8107
 
@@ -8116,7 +8116,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8116
8116
  return result;
8117
8117
  }
8118
8118
 
8119
- Py_DECREF(result);
8119
+ Py_DECREF_IMMORTAL(result);
8120
8120
  }
8121
8121
 
8122
8122
  if (checked_reverse_op == false) {
@@ -8131,7 +8131,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8131
8131
  return result;
8132
8132
  }
8133
8133
 
8134
- Py_DECREF(result);
8134
+ Py_DECREF_IMMORTAL(result);
8135
8135
  }
8136
8136
  }
8137
8137
 
@@ -8143,13 +8143,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8143
8143
  case Py_EQ: {
8144
8144
  bool r = operand1 == operand2;
8145
8145
  PyObject *result = BOOL_FROM(r);
8146
- Py_INCREF(result);
8146
+ Py_INCREF_IMMORTAL(result);
8147
8147
  return result;
8148
8148
  }
8149
8149
  case Py_NE: {
8150
8150
  bool r = operand1 != operand2;
8151
8151
  PyObject *result = BOOL_FROM(r);
8152
- Py_INCREF(result);
8152
+ Py_INCREF_IMMORTAL(result);
8153
8153
  return result;
8154
8154
  }
8155
8155
  default:
@@ -8221,7 +8221,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8221
8221
  }
8222
8222
  }
8223
8223
 
8224
- Py_DECREF(result);
8224
+ Py_DECREF_IMMORTAL(result);
8225
8225
  }
8226
8226
 
8227
8227
  // No rich comparison worked, but maybe compare works.
@@ -8290,7 +8290,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8290
8290
  }
8291
8291
  }
8292
8292
 
8293
- Py_DECREF(result);
8293
+ Py_DECREF_IMMORTAL(result);
8294
8294
  }
8295
8295
  }
8296
8296
 
@@ -8312,7 +8312,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8312
8312
  }
8313
8313
  }
8314
8314
 
8315
- Py_DECREF(result);
8315
+ Py_DECREF_IMMORTAL(result);
8316
8316
  }
8317
8317
 
8318
8318
  f = PyFloat_Type.tp_richcompare;
@@ -8333,7 +8333,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8333
8333
  }
8334
8334
  }
8335
8335
 
8336
- Py_DECREF(result);
8336
+ Py_DECREF_IMMORTAL(result);
8337
8337
  }
8338
8338
 
8339
8339
  int c;
@@ -8449,7 +8449,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8449
8449
  }
8450
8450
  }
8451
8451
 
8452
- Py_DECREF(result);
8452
+ Py_DECREF_IMMORTAL(result);
8453
8453
  }
8454
8454
  }
8455
8455
 
@@ -8472,7 +8472,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8472
8472
  }
8473
8473
  }
8474
8474
 
8475
- Py_DECREF(result);
8475
+ Py_DECREF_IMMORTAL(result);
8476
8476
  }
8477
8477
 
8478
8478
  if (checked_reverse_op == false) {
@@ -8495,7 +8495,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8495
8495
  }
8496
8496
  }
8497
8497
 
8498
- Py_DECREF(result);
8498
+ Py_DECREF_IMMORTAL(result);
8499
8499
  }
8500
8500
  }
8501
8501
 
@@ -8569,7 +8569,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8569
8569
  }
8570
8570
  }
8571
8571
 
8572
- Py_DECREF(result);
8572
+ Py_DECREF_IMMORTAL(result);
8573
8573
  }
8574
8574
 
8575
8575
  // No rich comparison worked, but maybe compare works.
@@ -8638,7 +8638,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8638
8638
  }
8639
8639
  }
8640
8640
 
8641
- Py_DECREF(result);
8641
+ Py_DECREF_IMMORTAL(result);
8642
8642
  }
8643
8643
  }
8644
8644
 
@@ -8660,7 +8660,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8660
8660
  }
8661
8661
  }
8662
8662
 
8663
- Py_DECREF(result);
8663
+ Py_DECREF_IMMORTAL(result);
8664
8664
  }
8665
8665
 
8666
8666
  f = RICHCOMPARE(type2);
@@ -8681,7 +8681,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8681
8681
  }
8682
8682
  }
8683
8683
 
8684
- Py_DECREF(result);
8684
+ Py_DECREF_IMMORTAL(result);
8685
8685
  }
8686
8686
 
8687
8687
  int c;
@@ -8797,7 +8797,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8797
8797
  }
8798
8798
  }
8799
8799
 
8800
- Py_DECREF(result);
8800
+ Py_DECREF_IMMORTAL(result);
8801
8801
  }
8802
8802
  }
8803
8803
 
@@ -8820,7 +8820,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8820
8820
  }
8821
8821
  }
8822
8822
 
8823
- Py_DECREF(result);
8823
+ Py_DECREF_IMMORTAL(result);
8824
8824
  }
8825
8825
 
8826
8826
  if (checked_reverse_op == false) {
@@ -8843,7 +8843,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8843
8843
  }
8844
8844
  }
8845
8845
 
8846
- Py_DECREF(result);
8846
+ Py_DECREF_IMMORTAL(result);
8847
8847
  }
8848
8848
  }
8849
8849
 
@@ -8892,7 +8892,7 @@ static PyObject *COMPARE_NE_OBJECT_TUPLE_TUPLE(PyObject *operand1, PyObject *ope
8892
8892
 
8893
8893
  // Convert to target type.
8894
8894
  PyObject *result = BOOL_FROM(r);
8895
- Py_INCREF(result);
8895
+ Py_INCREF_IMMORTAL(result);
8896
8896
  return result;
8897
8897
  }
8898
8898
 
@@ -8922,7 +8922,7 @@ static PyObject *COMPARE_NE_OBJECT_TUPLE_TUPLE(PyObject *operand1, PyObject *ope
8922
8922
 
8923
8923
  // Convert to target type.
8924
8924
  PyObject *result = BOOL_FROM(r);
8925
- Py_INCREF(result);
8925
+ Py_INCREF_IMMORTAL(result);
8926
8926
  return result;
8927
8927
  }
8928
8928
  /* Code referring to "OBJECT" corresponds to any Python object and "TUPLE" to Python 'tuple'. */
@@ -8959,7 +8959,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
8959
8959
  return result;
8960
8960
  }
8961
8961
 
8962
- Py_DECREF(result);
8962
+ Py_DECREF_IMMORTAL(result);
8963
8963
  }
8964
8964
 
8965
8965
  // No rich comparison worked, but maybe compare works.
@@ -9000,7 +9000,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9000
9000
 
9001
9001
  bool r = c != 0;
9002
9002
  PyObject *result = BOOL_FROM(r);
9003
- Py_INCREF(result);
9003
+ Py_INCREF_IMMORTAL(result);
9004
9004
  return result;
9005
9005
  }
9006
9006
  }
@@ -9020,7 +9020,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9020
9020
  return result;
9021
9021
  }
9022
9022
 
9023
- Py_DECREF(result);
9023
+ Py_DECREF_IMMORTAL(result);
9024
9024
  }
9025
9025
  }
9026
9026
 
@@ -9034,7 +9034,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9034
9034
  return result;
9035
9035
  }
9036
9036
 
9037
- Py_DECREF(result);
9037
+ Py_DECREF_IMMORTAL(result);
9038
9038
  }
9039
9039
 
9040
9040
  f = PyTuple_Type.tp_richcompare;
@@ -9047,7 +9047,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9047
9047
  return result;
9048
9048
  }
9049
9049
 
9050
- Py_DECREF(result);
9050
+ Py_DECREF_IMMORTAL(result);
9051
9051
  }
9052
9052
 
9053
9053
  int c;
@@ -9135,7 +9135,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9135
9135
 
9136
9136
  bool r = c != 0;
9137
9137
  PyObject *result = BOOL_FROM(r);
9138
- Py_INCREF(result);
9138
+ Py_INCREF_IMMORTAL(result);
9139
9139
  return result;
9140
9140
  #else
9141
9141
  bool checked_reverse_op = false;
@@ -9155,7 +9155,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9155
9155
  return result;
9156
9156
  }
9157
9157
 
9158
- Py_DECREF(result);
9158
+ Py_DECREF_IMMORTAL(result);
9159
9159
  }
9160
9160
  }
9161
9161
 
@@ -9170,7 +9170,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9170
9170
  return result;
9171
9171
  }
9172
9172
 
9173
- Py_DECREF(result);
9173
+ Py_DECREF_IMMORTAL(result);
9174
9174
  }
9175
9175
 
9176
9176
  if (checked_reverse_op == false) {
@@ -9185,7 +9185,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9185
9185
  return result;
9186
9186
  }
9187
9187
 
9188
- Py_DECREF(result);
9188
+ Py_DECREF_IMMORTAL(result);
9189
9189
  }
9190
9190
  }
9191
9191
 
@@ -9197,13 +9197,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9197
9197
  case Py_EQ: {
9198
9198
  bool r = operand1 == operand2;
9199
9199
  PyObject *result = BOOL_FROM(r);
9200
- Py_INCREF(result);
9200
+ Py_INCREF_IMMORTAL(result);
9201
9201
  return result;
9202
9202
  }
9203
9203
  case Py_NE: {
9204
9204
  bool r = operand1 != operand2;
9205
9205
  PyObject *result = BOOL_FROM(r);
9206
- Py_INCREF(result);
9206
+ Py_INCREF_IMMORTAL(result);
9207
9207
  return result;
9208
9208
  }
9209
9209
  default:
@@ -9251,7 +9251,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9251
9251
  return result;
9252
9252
  }
9253
9253
 
9254
- Py_DECREF(result);
9254
+ Py_DECREF_IMMORTAL(result);
9255
9255
  }
9256
9256
 
9257
9257
  // No rich comparison worked, but maybe compare works.
@@ -9292,7 +9292,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9292
9292
 
9293
9293
  bool r = c != 0;
9294
9294
  PyObject *result = BOOL_FROM(r);
9295
- Py_INCREF(result);
9295
+ Py_INCREF_IMMORTAL(result);
9296
9296
  return result;
9297
9297
  }
9298
9298
  }
@@ -9312,7 +9312,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9312
9312
  return result;
9313
9313
  }
9314
9314
 
9315
- Py_DECREF(result);
9315
+ Py_DECREF_IMMORTAL(result);
9316
9316
  }
9317
9317
  }
9318
9318
 
@@ -9326,7 +9326,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9326
9326
  return result;
9327
9327
  }
9328
9328
 
9329
- Py_DECREF(result);
9329
+ Py_DECREF_IMMORTAL(result);
9330
9330
  }
9331
9331
 
9332
9332
  f = RICHCOMPARE(type2);
@@ -9339,7 +9339,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9339
9339
  return result;
9340
9340
  }
9341
9341
 
9342
- Py_DECREF(result);
9342
+ Py_DECREF_IMMORTAL(result);
9343
9343
  }
9344
9344
 
9345
9345
  int c;
@@ -9427,7 +9427,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9427
9427
 
9428
9428
  bool r = c != 0;
9429
9429
  PyObject *result = BOOL_FROM(r);
9430
- Py_INCREF(result);
9430
+ Py_INCREF_IMMORTAL(result);
9431
9431
  return result;
9432
9432
  #else
9433
9433
  bool checked_reverse_op = false;
@@ -9447,7 +9447,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9447
9447
  return result;
9448
9448
  }
9449
9449
 
9450
- Py_DECREF(result);
9450
+ Py_DECREF_IMMORTAL(result);
9451
9451
  }
9452
9452
  }
9453
9453
 
@@ -9462,7 +9462,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9462
9462
  return result;
9463
9463
  }
9464
9464
 
9465
- Py_DECREF(result);
9465
+ Py_DECREF_IMMORTAL(result);
9466
9466
  }
9467
9467
 
9468
9468
  if (checked_reverse_op == false) {
@@ -9477,7 +9477,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9477
9477
  return result;
9478
9478
  }
9479
9479
 
9480
- Py_DECREF(result);
9480
+ Py_DECREF_IMMORTAL(result);
9481
9481
  }
9482
9482
  }
9483
9483
 
@@ -9489,13 +9489,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9489
9489
  case Py_EQ: {
9490
9490
  bool r = operand1 == operand2;
9491
9491
  PyObject *result = BOOL_FROM(r);
9492
- Py_INCREF(result);
9492
+ Py_INCREF_IMMORTAL(result);
9493
9493
  return result;
9494
9494
  }
9495
9495
  case Py_NE: {
9496
9496
  bool r = operand1 != operand2;
9497
9497
  PyObject *result = BOOL_FROM(r);
9498
- Py_INCREF(result);
9498
+ Py_INCREF_IMMORTAL(result);
9499
9499
  return result;
9500
9500
  }
9501
9501
  default:
@@ -9607,7 +9607,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9607
9607
  }
9608
9608
  }
9609
9609
 
9610
- Py_DECREF(result);
9610
+ Py_DECREF_IMMORTAL(result);
9611
9611
  }
9612
9612
 
9613
9613
  // No rich comparison worked, but maybe compare works.
@@ -9676,7 +9676,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9676
9676
  }
9677
9677
  }
9678
9678
 
9679
- Py_DECREF(result);
9679
+ Py_DECREF_IMMORTAL(result);
9680
9680
  }
9681
9681
  }
9682
9682
 
@@ -9698,7 +9698,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9698
9698
  }
9699
9699
  }
9700
9700
 
9701
- Py_DECREF(result);
9701
+ Py_DECREF_IMMORTAL(result);
9702
9702
  }
9703
9703
 
9704
9704
  f = PyTuple_Type.tp_richcompare;
@@ -9719,7 +9719,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9719
9719
  }
9720
9720
  }
9721
9721
 
9722
- Py_DECREF(result);
9722
+ Py_DECREF_IMMORTAL(result);
9723
9723
  }
9724
9724
 
9725
9725
  int c;
@@ -9835,7 +9835,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9835
9835
  }
9836
9836
  }
9837
9837
 
9838
- Py_DECREF(result);
9838
+ Py_DECREF_IMMORTAL(result);
9839
9839
  }
9840
9840
  }
9841
9841
 
@@ -9858,7 +9858,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9858
9858
  }
9859
9859
  }
9860
9860
 
9861
- Py_DECREF(result);
9861
+ Py_DECREF_IMMORTAL(result);
9862
9862
  }
9863
9863
 
9864
9864
  if (checked_reverse_op == false) {
@@ -9881,7 +9881,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9881
9881
  }
9882
9882
  }
9883
9883
 
9884
- Py_DECREF(result);
9884
+ Py_DECREF_IMMORTAL(result);
9885
9885
  }
9886
9886
  }
9887
9887
 
@@ -9955,7 +9955,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
9955
9955
  }
9956
9956
  }
9957
9957
 
9958
- Py_DECREF(result);
9958
+ Py_DECREF_IMMORTAL(result);
9959
9959
  }
9960
9960
 
9961
9961
  // No rich comparison worked, but maybe compare works.
@@ -10024,7 +10024,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10024
10024
  }
10025
10025
  }
10026
10026
 
10027
- Py_DECREF(result);
10027
+ Py_DECREF_IMMORTAL(result);
10028
10028
  }
10029
10029
  }
10030
10030
 
@@ -10046,7 +10046,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10046
10046
  }
10047
10047
  }
10048
10048
 
10049
- Py_DECREF(result);
10049
+ Py_DECREF_IMMORTAL(result);
10050
10050
  }
10051
10051
 
10052
10052
  f = RICHCOMPARE(type2);
@@ -10067,7 +10067,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10067
10067
  }
10068
10068
  }
10069
10069
 
10070
- Py_DECREF(result);
10070
+ Py_DECREF_IMMORTAL(result);
10071
10071
  }
10072
10072
 
10073
10073
  int c;
@@ -10183,7 +10183,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10183
10183
  }
10184
10184
  }
10185
10185
 
10186
- Py_DECREF(result);
10186
+ Py_DECREF_IMMORTAL(result);
10187
10187
  }
10188
10188
  }
10189
10189
 
@@ -10206,7 +10206,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10206
10206
  }
10207
10207
  }
10208
10208
 
10209
- Py_DECREF(result);
10209
+ Py_DECREF_IMMORTAL(result);
10210
10210
  }
10211
10211
 
10212
10212
  if (checked_reverse_op == false) {
@@ -10229,7 +10229,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10229
10229
  }
10230
10230
  }
10231
10231
 
10232
- Py_DECREF(result);
10232
+ Py_DECREF_IMMORTAL(result);
10233
10233
  }
10234
10234
  }
10235
10235
 
@@ -10281,7 +10281,7 @@ static PyObject *COMPARE_NE_OBJECT_LIST_LIST(PyObject *operand1, PyObject *opera
10281
10281
 
10282
10282
  // Convert to target type.
10283
10283
  PyObject *result = BOOL_FROM(r);
10284
- Py_INCREF(result);
10284
+ Py_INCREF_IMMORTAL(result);
10285
10285
  return result;
10286
10286
  }
10287
10287
 
@@ -10321,7 +10321,7 @@ static PyObject *COMPARE_NE_OBJECT_LIST_LIST(PyObject *operand1, PyObject *opera
10321
10321
 
10322
10322
  // Convert to target type.
10323
10323
  PyObject *result = BOOL_FROM(r);
10324
- Py_INCREF(result);
10324
+ Py_INCREF_IMMORTAL(result);
10325
10325
  return result;
10326
10326
  }
10327
10327
  /* Code referring to "OBJECT" corresponds to any Python object and "LIST" to Python 'list'. */
@@ -10358,7 +10358,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10358
10358
  return result;
10359
10359
  }
10360
10360
 
10361
- Py_DECREF(result);
10361
+ Py_DECREF_IMMORTAL(result);
10362
10362
  }
10363
10363
 
10364
10364
  // No rich comparison worked, but maybe compare works.
@@ -10399,7 +10399,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10399
10399
 
10400
10400
  bool r = c != 0;
10401
10401
  PyObject *result = BOOL_FROM(r);
10402
- Py_INCREF(result);
10402
+ Py_INCREF_IMMORTAL(result);
10403
10403
  return result;
10404
10404
  }
10405
10405
  }
@@ -10419,7 +10419,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10419
10419
  return result;
10420
10420
  }
10421
10421
 
10422
- Py_DECREF(result);
10422
+ Py_DECREF_IMMORTAL(result);
10423
10423
  }
10424
10424
  }
10425
10425
 
@@ -10433,7 +10433,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10433
10433
  return result;
10434
10434
  }
10435
10435
 
10436
- Py_DECREF(result);
10436
+ Py_DECREF_IMMORTAL(result);
10437
10437
  }
10438
10438
 
10439
10439
  f = PyList_Type.tp_richcompare;
@@ -10446,7 +10446,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10446
10446
  return result;
10447
10447
  }
10448
10448
 
10449
- Py_DECREF(result);
10449
+ Py_DECREF_IMMORTAL(result);
10450
10450
  }
10451
10451
 
10452
10452
  int c;
@@ -10534,7 +10534,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10534
10534
 
10535
10535
  bool r = c != 0;
10536
10536
  PyObject *result = BOOL_FROM(r);
10537
- Py_INCREF(result);
10537
+ Py_INCREF_IMMORTAL(result);
10538
10538
  return result;
10539
10539
  #else
10540
10540
  bool checked_reverse_op = false;
@@ -10554,7 +10554,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10554
10554
  return result;
10555
10555
  }
10556
10556
 
10557
- Py_DECREF(result);
10557
+ Py_DECREF_IMMORTAL(result);
10558
10558
  }
10559
10559
  }
10560
10560
 
@@ -10569,7 +10569,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10569
10569
  return result;
10570
10570
  }
10571
10571
 
10572
- Py_DECREF(result);
10572
+ Py_DECREF_IMMORTAL(result);
10573
10573
  }
10574
10574
 
10575
10575
  if (checked_reverse_op == false) {
@@ -10584,7 +10584,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10584
10584
  return result;
10585
10585
  }
10586
10586
 
10587
- Py_DECREF(result);
10587
+ Py_DECREF_IMMORTAL(result);
10588
10588
  }
10589
10589
  }
10590
10590
 
@@ -10596,13 +10596,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10596
10596
  case Py_EQ: {
10597
10597
  bool r = operand1 == operand2;
10598
10598
  PyObject *result = BOOL_FROM(r);
10599
- Py_INCREF(result);
10599
+ Py_INCREF_IMMORTAL(result);
10600
10600
  return result;
10601
10601
  }
10602
10602
  case Py_NE: {
10603
10603
  bool r = operand1 != operand2;
10604
10604
  PyObject *result = BOOL_FROM(r);
10605
- Py_INCREF(result);
10605
+ Py_INCREF_IMMORTAL(result);
10606
10606
  return result;
10607
10607
  }
10608
10608
  default:
@@ -10650,7 +10650,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10650
10650
  return result;
10651
10651
  }
10652
10652
 
10653
- Py_DECREF(result);
10653
+ Py_DECREF_IMMORTAL(result);
10654
10654
  }
10655
10655
 
10656
10656
  // No rich comparison worked, but maybe compare works.
@@ -10691,7 +10691,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10691
10691
 
10692
10692
  bool r = c != 0;
10693
10693
  PyObject *result = BOOL_FROM(r);
10694
- Py_INCREF(result);
10694
+ Py_INCREF_IMMORTAL(result);
10695
10695
  return result;
10696
10696
  }
10697
10697
  }
@@ -10711,7 +10711,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10711
10711
  return result;
10712
10712
  }
10713
10713
 
10714
- Py_DECREF(result);
10714
+ Py_DECREF_IMMORTAL(result);
10715
10715
  }
10716
10716
  }
10717
10717
 
@@ -10725,7 +10725,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10725
10725
  return result;
10726
10726
  }
10727
10727
 
10728
- Py_DECREF(result);
10728
+ Py_DECREF_IMMORTAL(result);
10729
10729
  }
10730
10730
 
10731
10731
  f = RICHCOMPARE(type2);
@@ -10738,7 +10738,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10738
10738
  return result;
10739
10739
  }
10740
10740
 
10741
- Py_DECREF(result);
10741
+ Py_DECREF_IMMORTAL(result);
10742
10742
  }
10743
10743
 
10744
10744
  int c;
@@ -10826,7 +10826,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10826
10826
 
10827
10827
  bool r = c != 0;
10828
10828
  PyObject *result = BOOL_FROM(r);
10829
- Py_INCREF(result);
10829
+ Py_INCREF_IMMORTAL(result);
10830
10830
  return result;
10831
10831
  #else
10832
10832
  bool checked_reverse_op = false;
@@ -10846,7 +10846,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10846
10846
  return result;
10847
10847
  }
10848
10848
 
10849
- Py_DECREF(result);
10849
+ Py_DECREF_IMMORTAL(result);
10850
10850
  }
10851
10851
  }
10852
10852
 
@@ -10861,7 +10861,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10861
10861
  return result;
10862
10862
  }
10863
10863
 
10864
- Py_DECREF(result);
10864
+ Py_DECREF_IMMORTAL(result);
10865
10865
  }
10866
10866
 
10867
10867
  if (checked_reverse_op == false) {
@@ -10876,7 +10876,7 @@ PyObject *RICH_COMPARE_NE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10876
10876
  return result;
10877
10877
  }
10878
10878
 
10879
- Py_DECREF(result);
10879
+ Py_DECREF_IMMORTAL(result);
10880
10880
  }
10881
10881
  }
10882
10882
 
@@ -10888,13 +10888,13 @@ PyObject *RICH_COMPARE_NE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10888
10888
  case Py_EQ: {
10889
10889
  bool r = operand1 == operand2;
10890
10890
  PyObject *result = BOOL_FROM(r);
10891
- Py_INCREF(result);
10891
+ Py_INCREF_IMMORTAL(result);
10892
10892
  return result;
10893
10893
  }
10894
10894
  case Py_NE: {
10895
10895
  bool r = operand1 != operand2;
10896
10896
  PyObject *result = BOOL_FROM(r);
10897
- Py_INCREF(result);
10897
+ Py_INCREF_IMMORTAL(result);
10898
10898
  return result;
10899
10899
  }
10900
10900
  default:
@@ -11013,7 +11013,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11013
11013
  }
11014
11014
  }
11015
11015
 
11016
- Py_DECREF(result);
11016
+ Py_DECREF_IMMORTAL(result);
11017
11017
  }
11018
11018
 
11019
11019
  // No rich comparison worked, but maybe compare works.
@@ -11082,7 +11082,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11082
11082
  }
11083
11083
  }
11084
11084
 
11085
- Py_DECREF(result);
11085
+ Py_DECREF_IMMORTAL(result);
11086
11086
  }
11087
11087
  }
11088
11088
 
@@ -11104,7 +11104,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11104
11104
  }
11105
11105
  }
11106
11106
 
11107
- Py_DECREF(result);
11107
+ Py_DECREF_IMMORTAL(result);
11108
11108
  }
11109
11109
 
11110
11110
  f = PyList_Type.tp_richcompare;
@@ -11125,7 +11125,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11125
11125
  }
11126
11126
  }
11127
11127
 
11128
- Py_DECREF(result);
11128
+ Py_DECREF_IMMORTAL(result);
11129
11129
  }
11130
11130
 
11131
11131
  int c;
@@ -11241,7 +11241,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11241
11241
  }
11242
11242
  }
11243
11243
 
11244
- Py_DECREF(result);
11244
+ Py_DECREF_IMMORTAL(result);
11245
11245
  }
11246
11246
  }
11247
11247
 
@@ -11264,7 +11264,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11264
11264
  }
11265
11265
  }
11266
11266
 
11267
- Py_DECREF(result);
11267
+ Py_DECREF_IMMORTAL(result);
11268
11268
  }
11269
11269
 
11270
11270
  if (checked_reverse_op == false) {
@@ -11287,7 +11287,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11287
11287
  }
11288
11288
  }
11289
11289
 
11290
- Py_DECREF(result);
11290
+ Py_DECREF_IMMORTAL(result);
11291
11291
  }
11292
11292
  }
11293
11293
 
@@ -11361,7 +11361,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11361
11361
  }
11362
11362
  }
11363
11363
 
11364
- Py_DECREF(result);
11364
+ Py_DECREF_IMMORTAL(result);
11365
11365
  }
11366
11366
 
11367
11367
  // No rich comparison worked, but maybe compare works.
@@ -11430,7 +11430,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11430
11430
  }
11431
11431
  }
11432
11432
 
11433
- Py_DECREF(result);
11433
+ Py_DECREF_IMMORTAL(result);
11434
11434
  }
11435
11435
  }
11436
11436
 
@@ -11452,7 +11452,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11452
11452
  }
11453
11453
  }
11454
11454
 
11455
- Py_DECREF(result);
11455
+ Py_DECREF_IMMORTAL(result);
11456
11456
  }
11457
11457
 
11458
11458
  f = RICHCOMPARE(type2);
@@ -11473,7 +11473,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11473
11473
  }
11474
11474
  }
11475
11475
 
11476
- Py_DECREF(result);
11476
+ Py_DECREF_IMMORTAL(result);
11477
11477
  }
11478
11478
 
11479
11479
  int c;
@@ -11589,7 +11589,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11589
11589
  }
11590
11590
  }
11591
11591
 
11592
- Py_DECREF(result);
11592
+ Py_DECREF_IMMORTAL(result);
11593
11593
  }
11594
11594
  }
11595
11595
 
@@ -11612,7 +11612,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11612
11612
  }
11613
11613
  }
11614
11614
 
11615
- Py_DECREF(result);
11615
+ Py_DECREF_IMMORTAL(result);
11616
11616
  }
11617
11617
 
11618
11618
  if (checked_reverse_op == false) {
@@ -11635,7 +11635,7 @@ nuitka_bool RICH_COMPARE_NE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11635
11635
  }
11636
11636
  }
11637
11637
 
11638
- Py_DECREF(result);
11638
+ Py_DECREF_IMMORTAL(result);
11639
11639
  }
11640
11640
  }
11641
11641
 
@@ -11724,7 +11724,7 @@ static PyObject *COMPARE_NE_OBJECT_LONG_CLONG(PyObject *operand1, long operand2)
11724
11724
 
11725
11725
  // Convert to target type.
11726
11726
  PyObject *result = BOOL_FROM(r);
11727
- Py_INCREF(result);
11727
+ Py_INCREF_IMMORTAL(result);
11728
11728
  return result;
11729
11729
  }
11730
11730
  /* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "INT" to Python2 'int'. */
@@ -11807,7 +11807,7 @@ static PyObject *COMPARE_NE_OBJECT_INT_CLONG(PyObject *operand1, long operand2)
11807
11807
 
11808
11808
  // Convert to target type.
11809
11809
  PyObject *result = BOOL_FROM(r);
11810
- Py_INCREF(result);
11810
+ Py_INCREF_IMMORTAL(result);
11811
11811
  return result;
11812
11812
  }
11813
11813
  /* Code referring to "INT" corresponds to Python2 'int' and "CLONG" to C platform long value. */
@@ -11864,7 +11864,7 @@ static PyObject *COMPARE_NE_OBJECT_LONG_DIGIT(PyObject *operand1, long operand2)
11864
11864
 
11865
11865
  // Convert to target type.
11866
11866
  PyObject *result = BOOL_FROM(r);
11867
- Py_INCREF(result);
11867
+ Py_INCREF_IMMORTAL(result);
11868
11868
  return result;
11869
11869
  }
11870
11870
  /* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "DIGIT" to C platform digit value for long
@@ -11920,7 +11920,7 @@ static PyObject *COMPARE_NE_OBJECT_FLOAT_CFLOAT(PyObject *operand1, double opera
11920
11920
 
11921
11921
  // Convert to target type.
11922
11922
  PyObject *result = BOOL_FROM(r);
11923
- Py_INCREF(result);
11923
+ Py_INCREF_IMMORTAL(result);
11924
11924
  return result;
11925
11925
  }
11926
11926
  /* Code referring to "FLOAT" corresponds to Python 'float' and "CFLOAT" to C platform float value. */