Nuitka-winsvc 2.2.2__cp311-cp311-win_amd64.whl → 2.3__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.
Files changed (199) hide show
  1. {Nuitka_winsvc-2.2.2.dist-info → Nuitka_winsvc-2.3.dist-info}/METADATA +1 -1
  2. {Nuitka_winsvc-2.2.2.dist-info → Nuitka_winsvc-2.3.dist-info}/RECORD +199 -198
  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 +104 -44
  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 +11 -5
  18. nuitka/build/SconsInterface.py +22 -6
  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 +35 -2
  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 +131 -131
  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 +17 -20
  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 +78 -54
  129. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +1 -1
  130. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +8 -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/Onefile.py +0 -1
  157. nuitka/freezer/Standalone.py +3 -1
  158. nuitka/importing/ImportCache.py +3 -2
  159. nuitka/importing/Importing.py +16 -3
  160. nuitka/importing/StandardLibrary.py +4 -0
  161. nuitka/nodes/ChildrenHavingMixins.py +2 -0
  162. nuitka/nodes/ExpressionBasesGenerated.py +4 -0
  163. nuitka/nodes/HardImportNodesGenerated.py +83 -0
  164. nuitka/nodes/ModuleNodes.py +10 -2
  165. nuitka/nodes/OsSysNodes.py +16 -0
  166. nuitka/nodes/SubscriptNodes.py +3 -3
  167. nuitka/plugins/PluginBase.py +2 -0
  168. nuitka/plugins/standard/DataFilesPlugin.py +22 -1
  169. nuitka/plugins/standard/DillPlugin/DillPlugin.c +3 -3
  170. nuitka/plugins/standard/OptionsNannyPlugin.py +9 -41
  171. nuitka/plugins/standard/PkgResourcesPlugin.py +8 -2
  172. nuitka/plugins/standard/PySidePyQtPlugin.py +4 -0
  173. nuitka/plugins/standard/standard.nuitka-package.config.yml +29 -13
  174. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +2 -2
  175. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +2 -2
  176. nuitka/specs/HardImportSpecs.py +3 -0
  177. nuitka/specs/ParameterSpecs.py +26 -15
  178. nuitka/tools/general/find_module/FindModuleCode.py +3 -2
  179. nuitka/tools/specialize/CTypeDescriptions.py +11 -9
  180. nuitka/tools/testing/Common.py +12 -5
  181. nuitka/tools/testing/SearchModes.py +5 -1
  182. nuitka/tools/watch/GitHub.py +1 -7
  183. nuitka/tree/Building.py +9 -6
  184. nuitka/tree/ReformulationMatchStatements.py +39 -3
  185. nuitka/tree/TreeHelpers.py +8 -0
  186. nuitka/utils/CStrings.py +7 -0
  187. nuitka/utils/Execution.py +10 -1
  188. nuitka/utils/FileOperations.py +21 -13
  189. nuitka/utils/Images.py +1 -1
  190. nuitka/utils/Importing.py +24 -0
  191. nuitka/utils/ReExecute.py +7 -3
  192. nuitka/utils/SharedLibraries.py +17 -0
  193. nuitka/utils/Yaml.py +9 -1
  194. {Nuitka_winsvc-2.2.2.data → Nuitka_winsvc-2.3.data}/scripts/nuitka-run.bat +0 -0
  195. {Nuitka_winsvc-2.2.2.data → Nuitka_winsvc-2.3.data}/scripts/nuitka.bat +0 -0
  196. {Nuitka_winsvc-2.2.2.dist-info → Nuitka_winsvc-2.3.dist-info}/LICENSE.txt +0 -0
  197. {Nuitka_winsvc-2.2.2.dist-info → Nuitka_winsvc-2.3.dist-info}/WHEEL +0 -0
  198. {Nuitka_winsvc-2.2.2.dist-info → Nuitka_winsvc-2.3.dist-info}/entry_points.txt +0 -0
  199. {Nuitka_winsvc-2.2.2.dist-info → Nuitka_winsvc-2.3.dist-info}/top_level.txt +0 -0
@@ -23,7 +23,7 @@ static PyObject *COMPARE_LE_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_LE_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
58
58
  if (operand1 == operand2 && IS_SANE_TYPE(Py_TYPE(operand1))) {
59
59
  bool r = true;
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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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_LE_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
 
@@ -753,7 +753,7 @@ static PyObject *COMPARE_LE_OBJECT_STR_STR(PyObject *operand1, PyObject *operand
753
753
 
754
754
  // Convert to target type.
755
755
  PyObject *result = BOOL_FROM(c != 0);
756
- Py_INCREF(result);
756
+ Py_INCREF_IMMORTAL(result);
757
757
  return result;
758
758
  }
759
759
  /* Code referring to "OBJECT" corresponds to any Python object and "STR" to Python2 'str'. */
@@ -790,7 +790,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
790
790
  return result;
791
791
  }
792
792
 
793
- Py_DECREF(result);
793
+ Py_DECREF_IMMORTAL(result);
794
794
  }
795
795
 
796
796
  // No rich comparison worked, but maybe compare works.
@@ -831,7 +831,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
831
831
 
832
832
  bool r = c != 0;
833
833
  PyObject *result = BOOL_FROM(r);
834
- Py_INCREF(result);
834
+ Py_INCREF_IMMORTAL(result);
835
835
  return result;
836
836
  }
837
837
  }
@@ -851,7 +851,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
851
851
  return result;
852
852
  }
853
853
 
854
- Py_DECREF(result);
854
+ Py_DECREF_IMMORTAL(result);
855
855
  }
856
856
  }
857
857
 
@@ -865,7 +865,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
865
865
  return result;
866
866
  }
867
867
 
868
- Py_DECREF(result);
868
+ Py_DECREF_IMMORTAL(result);
869
869
  }
870
870
 
871
871
  f = PyString_Type.tp_richcompare;
@@ -878,7 +878,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
878
878
  return result;
879
879
  }
880
880
 
881
- Py_DECREF(result);
881
+ Py_DECREF_IMMORTAL(result);
882
882
  }
883
883
 
884
884
  int c;
@@ -966,7 +966,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
966
966
 
967
967
  bool r = c != 0;
968
968
  PyObject *result = BOOL_FROM(r);
969
- Py_INCREF(result);
969
+ Py_INCREF_IMMORTAL(result);
970
970
  return result;
971
971
  #else
972
972
  bool checked_reverse_op = false;
@@ -986,7 +986,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
986
986
  return result;
987
987
  }
988
988
 
989
- Py_DECREF(result);
989
+ Py_DECREF_IMMORTAL(result);
990
990
  }
991
991
  }
992
992
 
@@ -1001,7 +1001,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
1001
1001
  return result;
1002
1002
  }
1003
1003
 
1004
- Py_DECREF(result);
1004
+ Py_DECREF_IMMORTAL(result);
1005
1005
  }
1006
1006
 
1007
1007
  if (checked_reverse_op == false) {
@@ -1016,7 +1016,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
1016
1016
  return result;
1017
1017
  }
1018
1018
 
1019
- Py_DECREF(result);
1019
+ Py_DECREF_IMMORTAL(result);
1020
1020
  }
1021
1021
  }
1022
1022
 
@@ -1028,13 +1028,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
1028
1028
  case Py_EQ: {
1029
1029
  bool r = operand1 == operand2;
1030
1030
  PyObject *result = BOOL_FROM(r);
1031
- Py_INCREF(result);
1031
+ Py_INCREF_IMMORTAL(result);
1032
1032
  return result;
1033
1033
  }
1034
1034
  case Py_NE: {
1035
1035
  bool r = operand1 != operand2;
1036
1036
  PyObject *result = BOOL_FROM(r);
1037
- Py_INCREF(result);
1037
+ Py_INCREF_IMMORTAL(result);
1038
1038
  return result;
1039
1039
  }
1040
1040
  default:
@@ -1084,7 +1084,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1084
1084
  return result;
1085
1085
  }
1086
1086
 
1087
- Py_DECREF(result);
1087
+ Py_DECREF_IMMORTAL(result);
1088
1088
  }
1089
1089
 
1090
1090
  // No rich comparison worked, but maybe compare works.
@@ -1125,7 +1125,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1125
1125
 
1126
1126
  bool r = c != 0;
1127
1127
  PyObject *result = BOOL_FROM(r);
1128
- Py_INCREF(result);
1128
+ Py_INCREF_IMMORTAL(result);
1129
1129
  return result;
1130
1130
  }
1131
1131
  }
@@ -1145,7 +1145,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1145
1145
  return result;
1146
1146
  }
1147
1147
 
1148
- Py_DECREF(result);
1148
+ Py_DECREF_IMMORTAL(result);
1149
1149
  }
1150
1150
  }
1151
1151
 
@@ -1159,7 +1159,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1159
1159
  return result;
1160
1160
  }
1161
1161
 
1162
- Py_DECREF(result);
1162
+ Py_DECREF_IMMORTAL(result);
1163
1163
  }
1164
1164
 
1165
1165
  f = RICHCOMPARE(type2);
@@ -1172,7 +1172,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1172
1172
  return result;
1173
1173
  }
1174
1174
 
1175
- Py_DECREF(result);
1175
+ Py_DECREF_IMMORTAL(result);
1176
1176
  }
1177
1177
 
1178
1178
  int c;
@@ -1260,7 +1260,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1260
1260
 
1261
1261
  bool r = c != 0;
1262
1262
  PyObject *result = BOOL_FROM(r);
1263
- Py_INCREF(result);
1263
+ Py_INCREF_IMMORTAL(result);
1264
1264
  return result;
1265
1265
  #else
1266
1266
  bool checked_reverse_op = false;
@@ -1280,7 +1280,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1280
1280
  return result;
1281
1281
  }
1282
1282
 
1283
- Py_DECREF(result);
1283
+ Py_DECREF_IMMORTAL(result);
1284
1284
  }
1285
1285
  }
1286
1286
 
@@ -1295,7 +1295,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1295
1295
  return result;
1296
1296
  }
1297
1297
 
1298
- Py_DECREF(result);
1298
+ Py_DECREF_IMMORTAL(result);
1299
1299
  }
1300
1300
 
1301
1301
  if (checked_reverse_op == false) {
@@ -1310,7 +1310,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1310
1310
  return result;
1311
1311
  }
1312
1312
 
1313
- Py_DECREF(result);
1313
+ Py_DECREF_IMMORTAL(result);
1314
1314
  }
1315
1315
  }
1316
1316
 
@@ -1322,13 +1322,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1322
1322
  case Py_EQ: {
1323
1323
  bool r = operand1 == operand2;
1324
1324
  PyObject *result = BOOL_FROM(r);
1325
- Py_INCREF(result);
1325
+ Py_INCREF_IMMORTAL(result);
1326
1326
  return result;
1327
1327
  }
1328
1328
  case Py_NE: {
1329
1329
  bool r = operand1 != operand2;
1330
1330
  PyObject *result = BOOL_FROM(r);
1331
- Py_INCREF(result);
1331
+ Py_INCREF_IMMORTAL(result);
1332
1332
  return result;
1333
1333
  }
1334
1334
  default:
@@ -1448,7 +1448,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1448
1448
  }
1449
1449
  }
1450
1450
 
1451
- Py_DECREF(result);
1451
+ Py_DECREF_IMMORTAL(result);
1452
1452
  }
1453
1453
 
1454
1454
  // No rich comparison worked, but maybe compare works.
@@ -1517,7 +1517,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1517
1517
  }
1518
1518
  }
1519
1519
 
1520
- Py_DECREF(result);
1520
+ Py_DECREF_IMMORTAL(result);
1521
1521
  }
1522
1522
  }
1523
1523
 
@@ -1539,7 +1539,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1539
1539
  }
1540
1540
  }
1541
1541
 
1542
- Py_DECREF(result);
1542
+ Py_DECREF_IMMORTAL(result);
1543
1543
  }
1544
1544
 
1545
1545
  f = PyString_Type.tp_richcompare;
@@ -1560,7 +1560,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1560
1560
  }
1561
1561
  }
1562
1562
 
1563
- Py_DECREF(result);
1563
+ Py_DECREF_IMMORTAL(result);
1564
1564
  }
1565
1565
 
1566
1566
  int c;
@@ -1676,7 +1676,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1676
1676
  }
1677
1677
  }
1678
1678
 
1679
- Py_DECREF(result);
1679
+ Py_DECREF_IMMORTAL(result);
1680
1680
  }
1681
1681
  }
1682
1682
 
@@ -1699,7 +1699,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1699
1699
  }
1700
1700
  }
1701
1701
 
1702
- Py_DECREF(result);
1702
+ Py_DECREF_IMMORTAL(result);
1703
1703
  }
1704
1704
 
1705
1705
  if (checked_reverse_op == false) {
@@ -1722,7 +1722,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1722
1722
  }
1723
1723
  }
1724
1724
 
1725
- Py_DECREF(result);
1725
+ Py_DECREF_IMMORTAL(result);
1726
1726
  }
1727
1727
  }
1728
1728
 
@@ -1798,7 +1798,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1798
1798
  }
1799
1799
  }
1800
1800
 
1801
- Py_DECREF(result);
1801
+ Py_DECREF_IMMORTAL(result);
1802
1802
  }
1803
1803
 
1804
1804
  // No rich comparison worked, but maybe compare works.
@@ -1867,7 +1867,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1867
1867
  }
1868
1868
  }
1869
1869
 
1870
- Py_DECREF(result);
1870
+ Py_DECREF_IMMORTAL(result);
1871
1871
  }
1872
1872
  }
1873
1873
 
@@ -1889,7 +1889,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1889
1889
  }
1890
1890
  }
1891
1891
 
1892
- Py_DECREF(result);
1892
+ Py_DECREF_IMMORTAL(result);
1893
1893
  }
1894
1894
 
1895
1895
  f = RICHCOMPARE(type2);
@@ -1910,7 +1910,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1910
1910
  }
1911
1911
  }
1912
1912
 
1913
- Py_DECREF(result);
1913
+ Py_DECREF_IMMORTAL(result);
1914
1914
  }
1915
1915
 
1916
1916
  int c;
@@ -2026,7 +2026,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
2026
2026
  }
2027
2027
  }
2028
2028
 
2029
- Py_DECREF(result);
2029
+ Py_DECREF_IMMORTAL(result);
2030
2030
  }
2031
2031
  }
2032
2032
 
@@ -2049,7 +2049,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
2049
2049
  }
2050
2050
  }
2051
2051
 
2052
- Py_DECREF(result);
2052
+ Py_DECREF_IMMORTAL(result);
2053
2053
  }
2054
2054
 
2055
2055
  if (checked_reverse_op == false) {
@@ -2072,7 +2072,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
2072
2072
  }
2073
2073
  }
2074
2074
 
2075
- Py_DECREF(result);
2075
+ Py_DECREF_IMMORTAL(result);
2076
2076
  }
2077
2077
  }
2078
2078
 
@@ -2120,7 +2120,7 @@ static PyObject *COMPARE_LE_OBJECT_UNICODE_UNICODE(PyObject *operand1, PyObject
2120
2120
 
2121
2121
  // Convert to target type.
2122
2122
  PyObject *result = BOOL_FROM(r);
2123
- Py_INCREF(result);
2123
+ Py_INCREF_IMMORTAL(result);
2124
2124
  return result;
2125
2125
  }
2126
2126
 
@@ -2163,7 +2163,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2163
2163
  return result;
2164
2164
  }
2165
2165
 
2166
- Py_DECREF(result);
2166
+ Py_DECREF_IMMORTAL(result);
2167
2167
  }
2168
2168
 
2169
2169
  // No rich comparison worked, but maybe compare works.
@@ -2204,7 +2204,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2204
2204
 
2205
2205
  bool r = c != 0;
2206
2206
  PyObject *result = BOOL_FROM(r);
2207
- Py_INCREF(result);
2207
+ Py_INCREF_IMMORTAL(result);
2208
2208
  return result;
2209
2209
  }
2210
2210
  }
@@ -2224,7 +2224,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2224
2224
  return result;
2225
2225
  }
2226
2226
 
2227
- Py_DECREF(result);
2227
+ Py_DECREF_IMMORTAL(result);
2228
2228
  }
2229
2229
  }
2230
2230
 
@@ -2238,7 +2238,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2238
2238
  return result;
2239
2239
  }
2240
2240
 
2241
- Py_DECREF(result);
2241
+ Py_DECREF_IMMORTAL(result);
2242
2242
  }
2243
2243
 
2244
2244
  f = PyUnicode_Type.tp_richcompare;
@@ -2251,7 +2251,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2251
2251
  return result;
2252
2252
  }
2253
2253
 
2254
- Py_DECREF(result);
2254
+ Py_DECREF_IMMORTAL(result);
2255
2255
  }
2256
2256
 
2257
2257
  int c;
@@ -2339,7 +2339,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2339
2339
 
2340
2340
  bool r = c != 0;
2341
2341
  PyObject *result = BOOL_FROM(r);
2342
- Py_INCREF(result);
2342
+ Py_INCREF_IMMORTAL(result);
2343
2343
  return result;
2344
2344
  #else
2345
2345
  bool checked_reverse_op = false;
@@ -2359,7 +2359,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2359
2359
  return result;
2360
2360
  }
2361
2361
 
2362
- Py_DECREF(result);
2362
+ Py_DECREF_IMMORTAL(result);
2363
2363
  }
2364
2364
  }
2365
2365
 
@@ -2374,7 +2374,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2374
2374
  return result;
2375
2375
  }
2376
2376
 
2377
- Py_DECREF(result);
2377
+ Py_DECREF_IMMORTAL(result);
2378
2378
  }
2379
2379
 
2380
2380
  if (checked_reverse_op == false) {
@@ -2389,7 +2389,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2389
2389
  return result;
2390
2390
  }
2391
2391
 
2392
- Py_DECREF(result);
2392
+ Py_DECREF_IMMORTAL(result);
2393
2393
  }
2394
2394
  }
2395
2395
 
@@ -2401,13 +2401,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2401
2401
  case Py_EQ: {
2402
2402
  bool r = operand1 == operand2;
2403
2403
  PyObject *result = BOOL_FROM(r);
2404
- Py_INCREF(result);
2404
+ Py_INCREF_IMMORTAL(result);
2405
2405
  return result;
2406
2406
  }
2407
2407
  case Py_NE: {
2408
2408
  bool r = operand1 != operand2;
2409
2409
  PyObject *result = BOOL_FROM(r);
2410
- Py_INCREF(result);
2410
+ Py_INCREF_IMMORTAL(result);
2411
2411
  return result;
2412
2412
  }
2413
2413
  default:
@@ -2457,7 +2457,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2457
2457
  return result;
2458
2458
  }
2459
2459
 
2460
- Py_DECREF(result);
2460
+ Py_DECREF_IMMORTAL(result);
2461
2461
  }
2462
2462
 
2463
2463
  // No rich comparison worked, but maybe compare works.
@@ -2498,7 +2498,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2498
2498
 
2499
2499
  bool r = c != 0;
2500
2500
  PyObject *result = BOOL_FROM(r);
2501
- Py_INCREF(result);
2501
+ Py_INCREF_IMMORTAL(result);
2502
2502
  return result;
2503
2503
  }
2504
2504
  }
@@ -2518,7 +2518,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2518
2518
  return result;
2519
2519
  }
2520
2520
 
2521
- Py_DECREF(result);
2521
+ Py_DECREF_IMMORTAL(result);
2522
2522
  }
2523
2523
  }
2524
2524
 
@@ -2532,7 +2532,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2532
2532
  return result;
2533
2533
  }
2534
2534
 
2535
- Py_DECREF(result);
2535
+ Py_DECREF_IMMORTAL(result);
2536
2536
  }
2537
2537
 
2538
2538
  f = RICHCOMPARE(type2);
@@ -2545,7 +2545,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2545
2545
  return result;
2546
2546
  }
2547
2547
 
2548
- Py_DECREF(result);
2548
+ Py_DECREF_IMMORTAL(result);
2549
2549
  }
2550
2550
 
2551
2551
  int c;
@@ -2633,7 +2633,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2633
2633
 
2634
2634
  bool r = c != 0;
2635
2635
  PyObject *result = BOOL_FROM(r);
2636
- Py_INCREF(result);
2636
+ Py_INCREF_IMMORTAL(result);
2637
2637
  return result;
2638
2638
  #else
2639
2639
  bool checked_reverse_op = false;
@@ -2653,7 +2653,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2653
2653
  return result;
2654
2654
  }
2655
2655
 
2656
- Py_DECREF(result);
2656
+ Py_DECREF_IMMORTAL(result);
2657
2657
  }
2658
2658
  }
2659
2659
 
@@ -2668,7 +2668,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2668
2668
  return result;
2669
2669
  }
2670
2670
 
2671
- Py_DECREF(result);
2671
+ Py_DECREF_IMMORTAL(result);
2672
2672
  }
2673
2673
 
2674
2674
  if (checked_reverse_op == false) {
@@ -2683,7 +2683,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2683
2683
  return result;
2684
2684
  }
2685
2685
 
2686
- Py_DECREF(result);
2686
+ Py_DECREF_IMMORTAL(result);
2687
2687
  }
2688
2688
  }
2689
2689
 
@@ -2695,13 +2695,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2695
2695
  case Py_EQ: {
2696
2696
  bool r = operand1 == operand2;
2697
2697
  PyObject *result = BOOL_FROM(r);
2698
- Py_INCREF(result);
2698
+ Py_INCREF_IMMORTAL(result);
2699
2699
  return result;
2700
2700
  }
2701
2701
  case Py_NE: {
2702
2702
  bool r = operand1 != operand2;
2703
2703
  PyObject *result = BOOL_FROM(r);
2704
- Py_INCREF(result);
2704
+ Py_INCREF_IMMORTAL(result);
2705
2705
  return result;
2706
2706
  }
2707
2707
  default:
@@ -2748,7 +2748,7 @@ static bool COMPARE_LE_CBOOL_UNICODE_UNICODE(PyObject *operand1, PyObject *opera
2748
2748
 
2749
2749
  // Convert to target type if necessary
2750
2750
  bool result = r == Py_True;
2751
- Py_DECREF(r);
2751
+ Py_DECREF_IMMORTAL(r);
2752
2752
 
2753
2753
  return result;
2754
2754
  }
@@ -2801,7 +2801,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2801
2801
  }
2802
2802
  }
2803
2803
 
2804
- Py_DECREF(result);
2804
+ Py_DECREF_IMMORTAL(result);
2805
2805
  }
2806
2806
 
2807
2807
  // No rich comparison worked, but maybe compare works.
@@ -2870,7 +2870,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2870
2870
  }
2871
2871
  }
2872
2872
 
2873
- Py_DECREF(result);
2873
+ Py_DECREF_IMMORTAL(result);
2874
2874
  }
2875
2875
  }
2876
2876
 
@@ -2892,7 +2892,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2892
2892
  }
2893
2893
  }
2894
2894
 
2895
- Py_DECREF(result);
2895
+ Py_DECREF_IMMORTAL(result);
2896
2896
  }
2897
2897
 
2898
2898
  f = PyUnicode_Type.tp_richcompare;
@@ -2913,7 +2913,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2913
2913
  }
2914
2914
  }
2915
2915
 
2916
- Py_DECREF(result);
2916
+ Py_DECREF_IMMORTAL(result);
2917
2917
  }
2918
2918
 
2919
2919
  int c;
@@ -3029,7 +3029,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
3029
3029
  }
3030
3030
  }
3031
3031
 
3032
- Py_DECREF(result);
3032
+ Py_DECREF_IMMORTAL(result);
3033
3033
  }
3034
3034
  }
3035
3035
 
@@ -3052,7 +3052,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
3052
3052
  }
3053
3053
  }
3054
3054
 
3055
- Py_DECREF(result);
3055
+ Py_DECREF_IMMORTAL(result);
3056
3056
  }
3057
3057
 
3058
3058
  if (checked_reverse_op == false) {
@@ -3075,7 +3075,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
3075
3075
  }
3076
3076
  }
3077
3077
 
3078
- Py_DECREF(result);
3078
+ Py_DECREF_IMMORTAL(result);
3079
3079
  }
3080
3080
  }
3081
3081
 
@@ -3151,7 +3151,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3151
3151
  }
3152
3152
  }
3153
3153
 
3154
- Py_DECREF(result);
3154
+ Py_DECREF_IMMORTAL(result);
3155
3155
  }
3156
3156
 
3157
3157
  // No rich comparison worked, but maybe compare works.
@@ -3220,7 +3220,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3220
3220
  }
3221
3221
  }
3222
3222
 
3223
- Py_DECREF(result);
3223
+ Py_DECREF_IMMORTAL(result);
3224
3224
  }
3225
3225
  }
3226
3226
 
@@ -3242,7 +3242,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3242
3242
  }
3243
3243
  }
3244
3244
 
3245
- Py_DECREF(result);
3245
+ Py_DECREF_IMMORTAL(result);
3246
3246
  }
3247
3247
 
3248
3248
  f = RICHCOMPARE(type2);
@@ -3263,7 +3263,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3263
3263
  }
3264
3264
  }
3265
3265
 
3266
- Py_DECREF(result);
3266
+ Py_DECREF_IMMORTAL(result);
3267
3267
  }
3268
3268
 
3269
3269
  int c;
@@ -3379,7 +3379,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3379
3379
  }
3380
3380
  }
3381
3381
 
3382
- Py_DECREF(result);
3382
+ Py_DECREF_IMMORTAL(result);
3383
3383
  }
3384
3384
  }
3385
3385
 
@@ -3402,7 +3402,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3402
3402
  }
3403
3403
  }
3404
3404
 
3405
- Py_DECREF(result);
3405
+ Py_DECREF_IMMORTAL(result);
3406
3406
  }
3407
3407
 
3408
3408
  if (checked_reverse_op == false) {
@@ -3425,7 +3425,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3425
3425
  }
3426
3426
  }
3427
3427
 
3428
- Py_DECREF(result);
3428
+ Py_DECREF_IMMORTAL(result);
3429
3429
  }
3430
3430
  }
3431
3431
 
@@ -3475,7 +3475,7 @@ static PyObject *COMPARE_LE_OBJECT_BYTES_BYTES(PyObject *operand1, PyObject *ope
3475
3475
 
3476
3476
  // Convert to target type.
3477
3477
  PyObject *result = BOOL_FROM(r);
3478
- Py_INCREF(result);
3478
+ Py_INCREF_IMMORTAL(result);
3479
3479
  return result;
3480
3480
  }
3481
3481
 
@@ -3503,7 +3503,7 @@ static PyObject *COMPARE_LE_OBJECT_BYTES_BYTES(PyObject *operand1, PyObject *ope
3503
3503
 
3504
3504
  // Convert to target type.
3505
3505
  PyObject *result = BOOL_FROM(c != 0);
3506
- Py_INCREF(result);
3506
+ Py_INCREF_IMMORTAL(result);
3507
3507
  return result;
3508
3508
  }
3509
3509
  /* Code referring to "OBJECT" corresponds to any Python object and "BYTES" to Python3 'bytes'. */
@@ -3540,7 +3540,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3540
3540
  return result;
3541
3541
  }
3542
3542
 
3543
- Py_DECREF(result);
3543
+ Py_DECREF_IMMORTAL(result);
3544
3544
  }
3545
3545
 
3546
3546
  // No rich comparison worked, but maybe compare works.
@@ -3581,7 +3581,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3581
3581
 
3582
3582
  bool r = c != 0;
3583
3583
  PyObject *result = BOOL_FROM(r);
3584
- Py_INCREF(result);
3584
+ Py_INCREF_IMMORTAL(result);
3585
3585
  return result;
3586
3586
  }
3587
3587
  }
@@ -3601,7 +3601,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3601
3601
  return result;
3602
3602
  }
3603
3603
 
3604
- Py_DECREF(result);
3604
+ Py_DECREF_IMMORTAL(result);
3605
3605
  }
3606
3606
  }
3607
3607
 
@@ -3615,7 +3615,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3615
3615
  return result;
3616
3616
  }
3617
3617
 
3618
- Py_DECREF(result);
3618
+ Py_DECREF_IMMORTAL(result);
3619
3619
  }
3620
3620
 
3621
3621
  f = PyBytes_Type.tp_richcompare;
@@ -3628,7 +3628,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3628
3628
  return result;
3629
3629
  }
3630
3630
 
3631
- Py_DECREF(result);
3631
+ Py_DECREF_IMMORTAL(result);
3632
3632
  }
3633
3633
 
3634
3634
  int c;
@@ -3716,7 +3716,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3716
3716
 
3717
3717
  bool r = c != 0;
3718
3718
  PyObject *result = BOOL_FROM(r);
3719
- Py_INCREF(result);
3719
+ Py_INCREF_IMMORTAL(result);
3720
3720
  return result;
3721
3721
  #else
3722
3722
  bool checked_reverse_op = false;
@@ -3736,7 +3736,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3736
3736
  return result;
3737
3737
  }
3738
3738
 
3739
- Py_DECREF(result);
3739
+ Py_DECREF_IMMORTAL(result);
3740
3740
  }
3741
3741
  }
3742
3742
 
@@ -3751,7 +3751,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3751
3751
  return result;
3752
3752
  }
3753
3753
 
3754
- Py_DECREF(result);
3754
+ Py_DECREF_IMMORTAL(result);
3755
3755
  }
3756
3756
 
3757
3757
  if (checked_reverse_op == false) {
@@ -3766,7 +3766,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3766
3766
  return result;
3767
3767
  }
3768
3768
 
3769
- Py_DECREF(result);
3769
+ Py_DECREF_IMMORTAL(result);
3770
3770
  }
3771
3771
  }
3772
3772
 
@@ -3778,13 +3778,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3778
3778
  case Py_EQ: {
3779
3779
  bool r = operand1 == operand2;
3780
3780
  PyObject *result = BOOL_FROM(r);
3781
- Py_INCREF(result);
3781
+ Py_INCREF_IMMORTAL(result);
3782
3782
  return result;
3783
3783
  }
3784
3784
  case Py_NE: {
3785
3785
  bool r = operand1 != operand2;
3786
3786
  PyObject *result = BOOL_FROM(r);
3787
- Py_INCREF(result);
3787
+ Py_INCREF_IMMORTAL(result);
3788
3788
  return result;
3789
3789
  }
3790
3790
  default:
@@ -3834,7 +3834,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3834
3834
  return result;
3835
3835
  }
3836
3836
 
3837
- Py_DECREF(result);
3837
+ Py_DECREF_IMMORTAL(result);
3838
3838
  }
3839
3839
 
3840
3840
  // No rich comparison worked, but maybe compare works.
@@ -3875,7 +3875,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3875
3875
 
3876
3876
  bool r = c != 0;
3877
3877
  PyObject *result = BOOL_FROM(r);
3878
- Py_INCREF(result);
3878
+ Py_INCREF_IMMORTAL(result);
3879
3879
  return result;
3880
3880
  }
3881
3881
  }
@@ -3895,7 +3895,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3895
3895
  return result;
3896
3896
  }
3897
3897
 
3898
- Py_DECREF(result);
3898
+ Py_DECREF_IMMORTAL(result);
3899
3899
  }
3900
3900
  }
3901
3901
 
@@ -3909,7 +3909,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3909
3909
  return result;
3910
3910
  }
3911
3911
 
3912
- Py_DECREF(result);
3912
+ Py_DECREF_IMMORTAL(result);
3913
3913
  }
3914
3914
 
3915
3915
  f = RICHCOMPARE(type2);
@@ -3922,7 +3922,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3922
3922
  return result;
3923
3923
  }
3924
3924
 
3925
- Py_DECREF(result);
3925
+ Py_DECREF_IMMORTAL(result);
3926
3926
  }
3927
3927
 
3928
3928
  int c;
@@ -4010,7 +4010,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4010
4010
 
4011
4011
  bool r = c != 0;
4012
4012
  PyObject *result = BOOL_FROM(r);
4013
- Py_INCREF(result);
4013
+ Py_INCREF_IMMORTAL(result);
4014
4014
  return result;
4015
4015
  #else
4016
4016
  bool checked_reverse_op = false;
@@ -4030,7 +4030,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4030
4030
  return result;
4031
4031
  }
4032
4032
 
4033
- Py_DECREF(result);
4033
+ Py_DECREF_IMMORTAL(result);
4034
4034
  }
4035
4035
  }
4036
4036
 
@@ -4045,7 +4045,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4045
4045
  return result;
4046
4046
  }
4047
4047
 
4048
- Py_DECREF(result);
4048
+ Py_DECREF_IMMORTAL(result);
4049
4049
  }
4050
4050
 
4051
4051
  if (checked_reverse_op == false) {
@@ -4060,7 +4060,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4060
4060
  return result;
4061
4061
  }
4062
4062
 
4063
- Py_DECREF(result);
4063
+ Py_DECREF_IMMORTAL(result);
4064
4064
  }
4065
4065
  }
4066
4066
 
@@ -4072,13 +4072,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4072
4072
  case Py_EQ: {
4073
4073
  bool r = operand1 == operand2;
4074
4074
  PyObject *result = BOOL_FROM(r);
4075
- Py_INCREF(result);
4075
+ Py_INCREF_IMMORTAL(result);
4076
4076
  return result;
4077
4077
  }
4078
4078
  case Py_NE: {
4079
4079
  bool r = operand1 != operand2;
4080
4080
  PyObject *result = BOOL_FROM(r);
4081
- Py_INCREF(result);
4081
+ Py_INCREF_IMMORTAL(result);
4082
4082
  return result;
4083
4083
  }
4084
4084
  default:
@@ -4198,7 +4198,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4198
4198
  }
4199
4199
  }
4200
4200
 
4201
- Py_DECREF(result);
4201
+ Py_DECREF_IMMORTAL(result);
4202
4202
  }
4203
4203
 
4204
4204
  // No rich comparison worked, but maybe compare works.
@@ -4267,7 +4267,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4267
4267
  }
4268
4268
  }
4269
4269
 
4270
- Py_DECREF(result);
4270
+ Py_DECREF_IMMORTAL(result);
4271
4271
  }
4272
4272
  }
4273
4273
 
@@ -4289,7 +4289,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4289
4289
  }
4290
4290
  }
4291
4291
 
4292
- Py_DECREF(result);
4292
+ Py_DECREF_IMMORTAL(result);
4293
4293
  }
4294
4294
 
4295
4295
  f = PyBytes_Type.tp_richcompare;
@@ -4310,7 +4310,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4310
4310
  }
4311
4311
  }
4312
4312
 
4313
- Py_DECREF(result);
4313
+ Py_DECREF_IMMORTAL(result);
4314
4314
  }
4315
4315
 
4316
4316
  int c;
@@ -4426,7 +4426,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4426
4426
  }
4427
4427
  }
4428
4428
 
4429
- Py_DECREF(result);
4429
+ Py_DECREF_IMMORTAL(result);
4430
4430
  }
4431
4431
  }
4432
4432
 
@@ -4449,7 +4449,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4449
4449
  }
4450
4450
  }
4451
4451
 
4452
- Py_DECREF(result);
4452
+ Py_DECREF_IMMORTAL(result);
4453
4453
  }
4454
4454
 
4455
4455
  if (checked_reverse_op == false) {
@@ -4472,7 +4472,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4472
4472
  }
4473
4473
  }
4474
4474
 
4475
- Py_DECREF(result);
4475
+ Py_DECREF_IMMORTAL(result);
4476
4476
  }
4477
4477
  }
4478
4478
 
@@ -4548,7 +4548,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4548
4548
  }
4549
4549
  }
4550
4550
 
4551
- Py_DECREF(result);
4551
+ Py_DECREF_IMMORTAL(result);
4552
4552
  }
4553
4553
 
4554
4554
  // No rich comparison worked, but maybe compare works.
@@ -4617,7 +4617,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4617
4617
  }
4618
4618
  }
4619
4619
 
4620
- Py_DECREF(result);
4620
+ Py_DECREF_IMMORTAL(result);
4621
4621
  }
4622
4622
  }
4623
4623
 
@@ -4639,7 +4639,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4639
4639
  }
4640
4640
  }
4641
4641
 
4642
- Py_DECREF(result);
4642
+ Py_DECREF_IMMORTAL(result);
4643
4643
  }
4644
4644
 
4645
4645
  f = RICHCOMPARE(type2);
@@ -4660,7 +4660,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4660
4660
  }
4661
4661
  }
4662
4662
 
4663
- Py_DECREF(result);
4663
+ Py_DECREF_IMMORTAL(result);
4664
4664
  }
4665
4665
 
4666
4666
  int c;
@@ -4776,7 +4776,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4776
4776
  }
4777
4777
  }
4778
4778
 
4779
- Py_DECREF(result);
4779
+ Py_DECREF_IMMORTAL(result);
4780
4780
  }
4781
4781
  }
4782
4782
 
@@ -4799,7 +4799,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4799
4799
  }
4800
4800
  }
4801
4801
 
4802
- Py_DECREF(result);
4802
+ Py_DECREF_IMMORTAL(result);
4803
4803
  }
4804
4804
 
4805
4805
  if (checked_reverse_op == false) {
@@ -4822,7 +4822,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4822
4822
  }
4823
4823
  }
4824
4824
 
4825
- Py_DECREF(result);
4825
+ Py_DECREF_IMMORTAL(result);
4826
4826
  }
4827
4827
  }
4828
4828
 
@@ -4890,7 +4890,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4890
4890
  return result;
4891
4891
  }
4892
4892
 
4893
- Py_DECREF(result);
4893
+ Py_DECREF_IMMORTAL(result);
4894
4894
  }
4895
4895
 
4896
4896
  // No rich comparison worked, but maybe compare works.
@@ -4931,7 +4931,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4931
4931
 
4932
4932
  bool r = c != 0;
4933
4933
  PyObject *result = BOOL_FROM(r);
4934
- Py_INCREF(result);
4934
+ Py_INCREF_IMMORTAL(result);
4935
4935
  return result;
4936
4936
  }
4937
4937
  }
@@ -4951,7 +4951,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4951
4951
  return result;
4952
4952
  }
4953
4953
 
4954
- Py_DECREF(result);
4954
+ Py_DECREF_IMMORTAL(result);
4955
4955
  }
4956
4956
  }
4957
4957
 
@@ -4965,7 +4965,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4965
4965
  return result;
4966
4966
  }
4967
4967
 
4968
- Py_DECREF(result);
4968
+ Py_DECREF_IMMORTAL(result);
4969
4969
  }
4970
4970
 
4971
4971
  f = NULL;
@@ -4978,7 +4978,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4978
4978
  return result;
4979
4979
  }
4980
4980
 
4981
- Py_DECREF(result);
4981
+ Py_DECREF_IMMORTAL(result);
4982
4982
  }
4983
4983
 
4984
4984
  int c;
@@ -5066,7 +5066,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5066
5066
 
5067
5067
  bool r = c != 0;
5068
5068
  PyObject *result = BOOL_FROM(r);
5069
- Py_INCREF(result);
5069
+ Py_INCREF_IMMORTAL(result);
5070
5070
  return result;
5071
5071
  #else
5072
5072
  bool checked_reverse_op = false;
@@ -5086,7 +5086,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5086
5086
  return result;
5087
5087
  }
5088
5088
 
5089
- Py_DECREF(result);
5089
+ Py_DECREF_IMMORTAL(result);
5090
5090
  }
5091
5091
  }
5092
5092
 
@@ -5101,7 +5101,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5101
5101
  return result;
5102
5102
  }
5103
5103
 
5104
- Py_DECREF(result);
5104
+ Py_DECREF_IMMORTAL(result);
5105
5105
  }
5106
5106
 
5107
5107
  if (checked_reverse_op == false) {
@@ -5116,7 +5116,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5116
5116
  return result;
5117
5117
  }
5118
5118
 
5119
- Py_DECREF(result);
5119
+ Py_DECREF_IMMORTAL(result);
5120
5120
  }
5121
5121
  }
5122
5122
 
@@ -5128,13 +5128,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5128
5128
  case Py_EQ: {
5129
5129
  bool r = operand1 == operand2;
5130
5130
  PyObject *result = BOOL_FROM(r);
5131
- Py_INCREF(result);
5131
+ Py_INCREF_IMMORTAL(result);
5132
5132
  return result;
5133
5133
  }
5134
5134
  case Py_NE: {
5135
5135
  bool r = operand1 != operand2;
5136
5136
  PyObject *result = BOOL_FROM(r);
5137
- Py_INCREF(result);
5137
+ Py_INCREF_IMMORTAL(result);
5138
5138
  return result;
5139
5139
  }
5140
5140
  default:
@@ -5184,7 +5184,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5184
5184
  return result;
5185
5185
  }
5186
5186
 
5187
- Py_DECREF(result);
5187
+ Py_DECREF_IMMORTAL(result);
5188
5188
  }
5189
5189
 
5190
5190
  // No rich comparison worked, but maybe compare works.
@@ -5225,7 +5225,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5225
5225
 
5226
5226
  bool r = c != 0;
5227
5227
  PyObject *result = BOOL_FROM(r);
5228
- Py_INCREF(result);
5228
+ Py_INCREF_IMMORTAL(result);
5229
5229
  return result;
5230
5230
  }
5231
5231
  }
@@ -5245,7 +5245,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5245
5245
  return result;
5246
5246
  }
5247
5247
 
5248
- Py_DECREF(result);
5248
+ Py_DECREF_IMMORTAL(result);
5249
5249
  }
5250
5250
  }
5251
5251
 
@@ -5259,7 +5259,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5259
5259
  return result;
5260
5260
  }
5261
5261
 
5262
- Py_DECREF(result);
5262
+ Py_DECREF_IMMORTAL(result);
5263
5263
  }
5264
5264
 
5265
5265
  f = RICHCOMPARE(type2);
@@ -5272,7 +5272,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5272
5272
  return result;
5273
5273
  }
5274
5274
 
5275
- Py_DECREF(result);
5275
+ Py_DECREF_IMMORTAL(result);
5276
5276
  }
5277
5277
 
5278
5278
  int c;
@@ -5360,7 +5360,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5360
5360
 
5361
5361
  bool r = c != 0;
5362
5362
  PyObject *result = BOOL_FROM(r);
5363
- Py_INCREF(result);
5363
+ Py_INCREF_IMMORTAL(result);
5364
5364
  return result;
5365
5365
  #else
5366
5366
  bool checked_reverse_op = false;
@@ -5380,7 +5380,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5380
5380
  return result;
5381
5381
  }
5382
5382
 
5383
- Py_DECREF(result);
5383
+ Py_DECREF_IMMORTAL(result);
5384
5384
  }
5385
5385
  }
5386
5386
 
@@ -5395,7 +5395,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5395
5395
  return result;
5396
5396
  }
5397
5397
 
5398
- Py_DECREF(result);
5398
+ Py_DECREF_IMMORTAL(result);
5399
5399
  }
5400
5400
 
5401
5401
  if (checked_reverse_op == false) {
@@ -5410,7 +5410,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5410
5410
  return result;
5411
5411
  }
5412
5412
 
5413
- Py_DECREF(result);
5413
+ Py_DECREF_IMMORTAL(result);
5414
5414
  }
5415
5415
  }
5416
5416
 
@@ -5422,13 +5422,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5422
5422
  case Py_EQ: {
5423
5423
  bool r = operand1 == operand2;
5424
5424
  PyObject *result = BOOL_FROM(r);
5425
- Py_INCREF(result);
5425
+ Py_INCREF_IMMORTAL(result);
5426
5426
  return result;
5427
5427
  }
5428
5428
  case Py_NE: {
5429
5429
  bool r = operand1 != operand2;
5430
5430
  PyObject *result = BOOL_FROM(r);
5431
- Py_INCREF(result);
5431
+ Py_INCREF_IMMORTAL(result);
5432
5432
  return result;
5433
5433
  }
5434
5434
  default:
@@ -5502,7 +5502,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5502
5502
  }
5503
5503
  }
5504
5504
 
5505
- Py_DECREF(result);
5505
+ Py_DECREF_IMMORTAL(result);
5506
5506
  }
5507
5507
 
5508
5508
  // No rich comparison worked, but maybe compare works.
@@ -5571,7 +5571,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5571
5571
  }
5572
5572
  }
5573
5573
 
5574
- Py_DECREF(result);
5574
+ Py_DECREF_IMMORTAL(result);
5575
5575
  }
5576
5576
  }
5577
5577
 
@@ -5593,7 +5593,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5593
5593
  }
5594
5594
  }
5595
5595
 
5596
- Py_DECREF(result);
5596
+ Py_DECREF_IMMORTAL(result);
5597
5597
  }
5598
5598
 
5599
5599
  f = NULL;
@@ -5614,7 +5614,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5614
5614
  }
5615
5615
  }
5616
5616
 
5617
- Py_DECREF(result);
5617
+ Py_DECREF_IMMORTAL(result);
5618
5618
  }
5619
5619
 
5620
5620
  int c;
@@ -5730,7 +5730,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5730
5730
  }
5731
5731
  }
5732
5732
 
5733
- Py_DECREF(result);
5733
+ Py_DECREF_IMMORTAL(result);
5734
5734
  }
5735
5735
  }
5736
5736
 
@@ -5753,7 +5753,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5753
5753
  }
5754
5754
  }
5755
5755
 
5756
- Py_DECREF(result);
5756
+ Py_DECREF_IMMORTAL(result);
5757
5757
  }
5758
5758
 
5759
5759
  if (checked_reverse_op == false) {
@@ -5776,7 +5776,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5776
5776
  }
5777
5777
  }
5778
5778
 
5779
- Py_DECREF(result);
5779
+ Py_DECREF_IMMORTAL(result);
5780
5780
  }
5781
5781
  }
5782
5782
 
@@ -5852,7 +5852,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5852
5852
  }
5853
5853
  }
5854
5854
 
5855
- Py_DECREF(result);
5855
+ Py_DECREF_IMMORTAL(result);
5856
5856
  }
5857
5857
 
5858
5858
  // No rich comparison worked, but maybe compare works.
@@ -5921,7 +5921,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5921
5921
  }
5922
5922
  }
5923
5923
 
5924
- Py_DECREF(result);
5924
+ Py_DECREF_IMMORTAL(result);
5925
5925
  }
5926
5926
  }
5927
5927
 
@@ -5943,7 +5943,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5943
5943
  }
5944
5944
  }
5945
5945
 
5946
- Py_DECREF(result);
5946
+ Py_DECREF_IMMORTAL(result);
5947
5947
  }
5948
5948
 
5949
5949
  f = RICHCOMPARE(type2);
@@ -5964,7 +5964,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5964
5964
  }
5965
5965
  }
5966
5966
 
5967
- Py_DECREF(result);
5967
+ Py_DECREF_IMMORTAL(result);
5968
5968
  }
5969
5969
 
5970
5970
  int c;
@@ -6080,7 +6080,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6080
6080
  }
6081
6081
  }
6082
6082
 
6083
- Py_DECREF(result);
6083
+ Py_DECREF_IMMORTAL(result);
6084
6084
  }
6085
6085
  }
6086
6086
 
@@ -6103,7 +6103,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6103
6103
  }
6104
6104
  }
6105
6105
 
6106
- Py_DECREF(result);
6106
+ Py_DECREF_IMMORTAL(result);
6107
6107
  }
6108
6108
 
6109
6109
  if (checked_reverse_op == false) {
@@ -6126,7 +6126,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6126
6126
  }
6127
6127
  }
6128
6128
 
6129
- Py_DECREF(result);
6129
+ Py_DECREF_IMMORTAL(result);
6130
6130
  }
6131
6131
  }
6132
6132
 
@@ -6195,7 +6195,7 @@ static PyObject *COMPARE_LE_OBJECT_LONG_LONG(PyObject *operand1, PyObject *opera
6195
6195
 
6196
6196
  // Convert to target type.
6197
6197
  PyObject *result = BOOL_FROM(r);
6198
- Py_INCREF(result);
6198
+ Py_INCREF_IMMORTAL(result);
6199
6199
  return result;
6200
6200
  }
6201
6201
  /* Code referring to "OBJECT" corresponds to any Python object and "LONG" to Python2 'long', Python3 'int'. */
@@ -6232,7 +6232,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6232
6232
  return result;
6233
6233
  }
6234
6234
 
6235
- Py_DECREF(result);
6235
+ Py_DECREF_IMMORTAL(result);
6236
6236
  }
6237
6237
 
6238
6238
  // No rich comparison worked, but maybe compare works.
@@ -6273,7 +6273,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6273
6273
 
6274
6274
  bool r = c != 0;
6275
6275
  PyObject *result = BOOL_FROM(r);
6276
- Py_INCREF(result);
6276
+ Py_INCREF_IMMORTAL(result);
6277
6277
  return result;
6278
6278
  }
6279
6279
  }
@@ -6293,7 +6293,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6293
6293
  return result;
6294
6294
  }
6295
6295
 
6296
- Py_DECREF(result);
6296
+ Py_DECREF_IMMORTAL(result);
6297
6297
  }
6298
6298
  }
6299
6299
 
@@ -6307,7 +6307,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6307
6307
  return result;
6308
6308
  }
6309
6309
 
6310
- Py_DECREF(result);
6310
+ Py_DECREF_IMMORTAL(result);
6311
6311
  }
6312
6312
 
6313
6313
  f = (PYTHON_VERSION < 0x300 ? NULL : PyLong_Type.tp_richcompare);
@@ -6320,7 +6320,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6320
6320
  return result;
6321
6321
  }
6322
6322
 
6323
- Py_DECREF(result);
6323
+ Py_DECREF_IMMORTAL(result);
6324
6324
  }
6325
6325
 
6326
6326
  int c;
@@ -6408,7 +6408,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6408
6408
 
6409
6409
  bool r = c != 0;
6410
6410
  PyObject *result = BOOL_FROM(r);
6411
- Py_INCREF(result);
6411
+ Py_INCREF_IMMORTAL(result);
6412
6412
  return result;
6413
6413
  #else
6414
6414
  bool checked_reverse_op = false;
@@ -6428,7 +6428,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6428
6428
  return result;
6429
6429
  }
6430
6430
 
6431
- Py_DECREF(result);
6431
+ Py_DECREF_IMMORTAL(result);
6432
6432
  }
6433
6433
  }
6434
6434
 
@@ -6443,7 +6443,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6443
6443
  return result;
6444
6444
  }
6445
6445
 
6446
- Py_DECREF(result);
6446
+ Py_DECREF_IMMORTAL(result);
6447
6447
  }
6448
6448
 
6449
6449
  if (checked_reverse_op == false) {
@@ -6458,7 +6458,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6458
6458
  return result;
6459
6459
  }
6460
6460
 
6461
- Py_DECREF(result);
6461
+ Py_DECREF_IMMORTAL(result);
6462
6462
  }
6463
6463
  }
6464
6464
 
@@ -6470,13 +6470,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6470
6470
  case Py_EQ: {
6471
6471
  bool r = operand1 == operand2;
6472
6472
  PyObject *result = BOOL_FROM(r);
6473
- Py_INCREF(result);
6473
+ Py_INCREF_IMMORTAL(result);
6474
6474
  return result;
6475
6475
  }
6476
6476
  case Py_NE: {
6477
6477
  bool r = operand1 != operand2;
6478
6478
  PyObject *result = BOOL_FROM(r);
6479
- Py_INCREF(result);
6479
+ Py_INCREF_IMMORTAL(result);
6480
6480
  return result;
6481
6481
  }
6482
6482
  default:
@@ -6526,7 +6526,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6526
6526
  return result;
6527
6527
  }
6528
6528
 
6529
- Py_DECREF(result);
6529
+ Py_DECREF_IMMORTAL(result);
6530
6530
  }
6531
6531
 
6532
6532
  // No rich comparison worked, but maybe compare works.
@@ -6567,7 +6567,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6567
6567
 
6568
6568
  bool r = c != 0;
6569
6569
  PyObject *result = BOOL_FROM(r);
6570
- Py_INCREF(result);
6570
+ Py_INCREF_IMMORTAL(result);
6571
6571
  return result;
6572
6572
  }
6573
6573
  }
@@ -6587,7 +6587,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6587
6587
  return result;
6588
6588
  }
6589
6589
 
6590
- Py_DECREF(result);
6590
+ Py_DECREF_IMMORTAL(result);
6591
6591
  }
6592
6592
  }
6593
6593
 
@@ -6601,7 +6601,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6601
6601
  return result;
6602
6602
  }
6603
6603
 
6604
- Py_DECREF(result);
6604
+ Py_DECREF_IMMORTAL(result);
6605
6605
  }
6606
6606
 
6607
6607
  f = RICHCOMPARE(type2);
@@ -6614,7 +6614,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6614
6614
  return result;
6615
6615
  }
6616
6616
 
6617
- Py_DECREF(result);
6617
+ Py_DECREF_IMMORTAL(result);
6618
6618
  }
6619
6619
 
6620
6620
  int c;
@@ -6702,7 +6702,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6702
6702
 
6703
6703
  bool r = c != 0;
6704
6704
  PyObject *result = BOOL_FROM(r);
6705
- Py_INCREF(result);
6705
+ Py_INCREF_IMMORTAL(result);
6706
6706
  return result;
6707
6707
  #else
6708
6708
  bool checked_reverse_op = false;
@@ -6722,7 +6722,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6722
6722
  return result;
6723
6723
  }
6724
6724
 
6725
- Py_DECREF(result);
6725
+ Py_DECREF_IMMORTAL(result);
6726
6726
  }
6727
6727
  }
6728
6728
 
@@ -6737,7 +6737,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6737
6737
  return result;
6738
6738
  }
6739
6739
 
6740
- Py_DECREF(result);
6740
+ Py_DECREF_IMMORTAL(result);
6741
6741
  }
6742
6742
 
6743
6743
  if (checked_reverse_op == false) {
@@ -6752,7 +6752,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6752
6752
  return result;
6753
6753
  }
6754
6754
 
6755
- Py_DECREF(result);
6755
+ Py_DECREF_IMMORTAL(result);
6756
6756
  }
6757
6757
  }
6758
6758
 
@@ -6764,13 +6764,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6764
6764
  case Py_EQ: {
6765
6765
  bool r = operand1 == operand2;
6766
6766
  PyObject *result = BOOL_FROM(r);
6767
- Py_INCREF(result);
6767
+ Py_INCREF_IMMORTAL(result);
6768
6768
  return result;
6769
6769
  }
6770
6770
  case Py_NE: {
6771
6771
  bool r = operand1 != operand2;
6772
6772
  PyObject *result = BOOL_FROM(r);
6773
- Py_INCREF(result);
6773
+ Py_INCREF_IMMORTAL(result);
6774
6774
  return result;
6775
6775
  }
6776
6776
  default:
@@ -6879,7 +6879,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6879
6879
  }
6880
6880
  }
6881
6881
 
6882
- Py_DECREF(result);
6882
+ Py_DECREF_IMMORTAL(result);
6883
6883
  }
6884
6884
 
6885
6885
  // No rich comparison worked, but maybe compare works.
@@ -6948,7 +6948,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6948
6948
  }
6949
6949
  }
6950
6950
 
6951
- Py_DECREF(result);
6951
+ Py_DECREF_IMMORTAL(result);
6952
6952
  }
6953
6953
  }
6954
6954
 
@@ -6970,7 +6970,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6970
6970
  }
6971
6971
  }
6972
6972
 
6973
- Py_DECREF(result);
6973
+ Py_DECREF_IMMORTAL(result);
6974
6974
  }
6975
6975
 
6976
6976
  f = (PYTHON_VERSION < 0x300 ? NULL : PyLong_Type.tp_richcompare);
@@ -6991,7 +6991,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6991
6991
  }
6992
6992
  }
6993
6993
 
6994
- Py_DECREF(result);
6994
+ Py_DECREF_IMMORTAL(result);
6995
6995
  }
6996
6996
 
6997
6997
  int c;
@@ -7107,7 +7107,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7107
7107
  }
7108
7108
  }
7109
7109
 
7110
- Py_DECREF(result);
7110
+ Py_DECREF_IMMORTAL(result);
7111
7111
  }
7112
7112
  }
7113
7113
 
@@ -7130,7 +7130,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7130
7130
  }
7131
7131
  }
7132
7132
 
7133
- Py_DECREF(result);
7133
+ Py_DECREF_IMMORTAL(result);
7134
7134
  }
7135
7135
 
7136
7136
  if (checked_reverse_op == false) {
@@ -7153,7 +7153,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7153
7153
  }
7154
7154
  }
7155
7155
 
7156
- Py_DECREF(result);
7156
+ Py_DECREF_IMMORTAL(result);
7157
7157
  }
7158
7158
  }
7159
7159
 
@@ -7229,7 +7229,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7229
7229
  }
7230
7230
  }
7231
7231
 
7232
- Py_DECREF(result);
7232
+ Py_DECREF_IMMORTAL(result);
7233
7233
  }
7234
7234
 
7235
7235
  // No rich comparison worked, but maybe compare works.
@@ -7298,7 +7298,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7298
7298
  }
7299
7299
  }
7300
7300
 
7301
- Py_DECREF(result);
7301
+ Py_DECREF_IMMORTAL(result);
7302
7302
  }
7303
7303
  }
7304
7304
 
@@ -7320,7 +7320,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7320
7320
  }
7321
7321
  }
7322
7322
 
7323
- Py_DECREF(result);
7323
+ Py_DECREF_IMMORTAL(result);
7324
7324
  }
7325
7325
 
7326
7326
  f = RICHCOMPARE(type2);
@@ -7341,7 +7341,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7341
7341
  }
7342
7342
  }
7343
7343
 
7344
- Py_DECREF(result);
7344
+ Py_DECREF_IMMORTAL(result);
7345
7345
  }
7346
7346
 
7347
7347
  int c;
@@ -7457,7 +7457,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7457
7457
  }
7458
7458
  }
7459
7459
 
7460
- Py_DECREF(result);
7460
+ Py_DECREF_IMMORTAL(result);
7461
7461
  }
7462
7462
  }
7463
7463
 
@@ -7480,7 +7480,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7480
7480
  }
7481
7481
  }
7482
7482
 
7483
- Py_DECREF(result);
7483
+ Py_DECREF_IMMORTAL(result);
7484
7484
  }
7485
7485
 
7486
7486
  if (checked_reverse_op == false) {
@@ -7503,7 +7503,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7503
7503
  }
7504
7504
  }
7505
7505
 
7506
- Py_DECREF(result);
7506
+ Py_DECREF_IMMORTAL(result);
7507
7507
  }
7508
7508
  }
7509
7509
 
@@ -7550,7 +7550,7 @@ static PyObject *COMPARE_LE_OBJECT_FLOAT_FLOAT(PyObject *operand1, PyObject *ope
7550
7550
 
7551
7551
  // Convert to target type.
7552
7552
  PyObject *result = BOOL_FROM(r);
7553
- Py_INCREF(result);
7553
+ Py_INCREF_IMMORTAL(result);
7554
7554
  return result;
7555
7555
  }
7556
7556
  /* Code referring to "OBJECT" corresponds to any Python object and "FLOAT" to Python 'float'. */
@@ -7587,7 +7587,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7587
7587
  return result;
7588
7588
  }
7589
7589
 
7590
- Py_DECREF(result);
7590
+ Py_DECREF_IMMORTAL(result);
7591
7591
  }
7592
7592
 
7593
7593
  // No rich comparison worked, but maybe compare works.
@@ -7628,7 +7628,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7628
7628
 
7629
7629
  bool r = c != 0;
7630
7630
  PyObject *result = BOOL_FROM(r);
7631
- Py_INCREF(result);
7631
+ Py_INCREF_IMMORTAL(result);
7632
7632
  return result;
7633
7633
  }
7634
7634
  }
@@ -7648,7 +7648,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7648
7648
  return result;
7649
7649
  }
7650
7650
 
7651
- Py_DECREF(result);
7651
+ Py_DECREF_IMMORTAL(result);
7652
7652
  }
7653
7653
  }
7654
7654
 
@@ -7662,7 +7662,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7662
7662
  return result;
7663
7663
  }
7664
7664
 
7665
- Py_DECREF(result);
7665
+ Py_DECREF_IMMORTAL(result);
7666
7666
  }
7667
7667
 
7668
7668
  f = PyFloat_Type.tp_richcompare;
@@ -7675,7 +7675,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7675
7675
  return result;
7676
7676
  }
7677
7677
 
7678
- Py_DECREF(result);
7678
+ Py_DECREF_IMMORTAL(result);
7679
7679
  }
7680
7680
 
7681
7681
  int c;
@@ -7763,7 +7763,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7763
7763
 
7764
7764
  bool r = c != 0;
7765
7765
  PyObject *result = BOOL_FROM(r);
7766
- Py_INCREF(result);
7766
+ Py_INCREF_IMMORTAL(result);
7767
7767
  return result;
7768
7768
  #else
7769
7769
  bool checked_reverse_op = false;
@@ -7783,7 +7783,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7783
7783
  return result;
7784
7784
  }
7785
7785
 
7786
- Py_DECREF(result);
7786
+ Py_DECREF_IMMORTAL(result);
7787
7787
  }
7788
7788
  }
7789
7789
 
@@ -7798,7 +7798,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7798
7798
  return result;
7799
7799
  }
7800
7800
 
7801
- Py_DECREF(result);
7801
+ Py_DECREF_IMMORTAL(result);
7802
7802
  }
7803
7803
 
7804
7804
  if (checked_reverse_op == false) {
@@ -7813,7 +7813,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7813
7813
  return result;
7814
7814
  }
7815
7815
 
7816
- Py_DECREF(result);
7816
+ Py_DECREF_IMMORTAL(result);
7817
7817
  }
7818
7818
  }
7819
7819
 
@@ -7825,13 +7825,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7825
7825
  case Py_EQ: {
7826
7826
  bool r = operand1 == operand2;
7827
7827
  PyObject *result = BOOL_FROM(r);
7828
- Py_INCREF(result);
7828
+ Py_INCREF_IMMORTAL(result);
7829
7829
  return result;
7830
7830
  }
7831
7831
  case Py_NE: {
7832
7832
  bool r = operand1 != operand2;
7833
7833
  PyObject *result = BOOL_FROM(r);
7834
- Py_INCREF(result);
7834
+ Py_INCREF_IMMORTAL(result);
7835
7835
  return result;
7836
7836
  }
7837
7837
  default:
@@ -7879,7 +7879,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7879
7879
  return result;
7880
7880
  }
7881
7881
 
7882
- Py_DECREF(result);
7882
+ Py_DECREF_IMMORTAL(result);
7883
7883
  }
7884
7884
 
7885
7885
  // No rich comparison worked, but maybe compare works.
@@ -7920,7 +7920,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7920
7920
 
7921
7921
  bool r = c != 0;
7922
7922
  PyObject *result = BOOL_FROM(r);
7923
- Py_INCREF(result);
7923
+ Py_INCREF_IMMORTAL(result);
7924
7924
  return result;
7925
7925
  }
7926
7926
  }
@@ -7940,7 +7940,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7940
7940
  return result;
7941
7941
  }
7942
7942
 
7943
- Py_DECREF(result);
7943
+ Py_DECREF_IMMORTAL(result);
7944
7944
  }
7945
7945
  }
7946
7946
 
@@ -7954,7 +7954,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7954
7954
  return result;
7955
7955
  }
7956
7956
 
7957
- Py_DECREF(result);
7957
+ Py_DECREF_IMMORTAL(result);
7958
7958
  }
7959
7959
 
7960
7960
  f = RICHCOMPARE(type2);
@@ -7967,7 +7967,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7967
7967
  return result;
7968
7968
  }
7969
7969
 
7970
- Py_DECREF(result);
7970
+ Py_DECREF_IMMORTAL(result);
7971
7971
  }
7972
7972
 
7973
7973
  int c;
@@ -8055,7 +8055,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8055
8055
 
8056
8056
  bool r = c != 0;
8057
8057
  PyObject *result = BOOL_FROM(r);
8058
- Py_INCREF(result);
8058
+ Py_INCREF_IMMORTAL(result);
8059
8059
  return result;
8060
8060
  #else
8061
8061
  bool checked_reverse_op = false;
@@ -8075,7 +8075,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8075
8075
  return result;
8076
8076
  }
8077
8077
 
8078
- Py_DECREF(result);
8078
+ Py_DECREF_IMMORTAL(result);
8079
8079
  }
8080
8080
  }
8081
8081
 
@@ -8090,7 +8090,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8090
8090
  return result;
8091
8091
  }
8092
8092
 
8093
- Py_DECREF(result);
8093
+ Py_DECREF_IMMORTAL(result);
8094
8094
  }
8095
8095
 
8096
8096
  if (checked_reverse_op == false) {
@@ -8105,7 +8105,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8105
8105
  return result;
8106
8106
  }
8107
8107
 
8108
- Py_DECREF(result);
8108
+ Py_DECREF_IMMORTAL(result);
8109
8109
  }
8110
8110
  }
8111
8111
 
@@ -8117,13 +8117,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8117
8117
  case Py_EQ: {
8118
8118
  bool r = operand1 == operand2;
8119
8119
  PyObject *result = BOOL_FROM(r);
8120
- Py_INCREF(result);
8120
+ Py_INCREF_IMMORTAL(result);
8121
8121
  return result;
8122
8122
  }
8123
8123
  case Py_NE: {
8124
8124
  bool r = operand1 != operand2;
8125
8125
  PyObject *result = BOOL_FROM(r);
8126
- Py_INCREF(result);
8126
+ Py_INCREF_IMMORTAL(result);
8127
8127
  return result;
8128
8128
  }
8129
8129
  default:
@@ -8207,7 +8207,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8207
8207
  }
8208
8208
  }
8209
8209
 
8210
- Py_DECREF(result);
8210
+ Py_DECREF_IMMORTAL(result);
8211
8211
  }
8212
8212
 
8213
8213
  // No rich comparison worked, but maybe compare works.
@@ -8276,7 +8276,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8276
8276
  }
8277
8277
  }
8278
8278
 
8279
- Py_DECREF(result);
8279
+ Py_DECREF_IMMORTAL(result);
8280
8280
  }
8281
8281
  }
8282
8282
 
@@ -8298,7 +8298,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8298
8298
  }
8299
8299
  }
8300
8300
 
8301
- Py_DECREF(result);
8301
+ Py_DECREF_IMMORTAL(result);
8302
8302
  }
8303
8303
 
8304
8304
  f = PyFloat_Type.tp_richcompare;
@@ -8319,7 +8319,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8319
8319
  }
8320
8320
  }
8321
8321
 
8322
- Py_DECREF(result);
8322
+ Py_DECREF_IMMORTAL(result);
8323
8323
  }
8324
8324
 
8325
8325
  int c;
@@ -8435,7 +8435,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8435
8435
  }
8436
8436
  }
8437
8437
 
8438
- Py_DECREF(result);
8438
+ Py_DECREF_IMMORTAL(result);
8439
8439
  }
8440
8440
  }
8441
8441
 
@@ -8458,7 +8458,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8458
8458
  }
8459
8459
  }
8460
8460
 
8461
- Py_DECREF(result);
8461
+ Py_DECREF_IMMORTAL(result);
8462
8462
  }
8463
8463
 
8464
8464
  if (checked_reverse_op == false) {
@@ -8481,7 +8481,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8481
8481
  }
8482
8482
  }
8483
8483
 
8484
- Py_DECREF(result);
8484
+ Py_DECREF_IMMORTAL(result);
8485
8485
  }
8486
8486
  }
8487
8487
 
@@ -8555,7 +8555,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8555
8555
  }
8556
8556
  }
8557
8557
 
8558
- Py_DECREF(result);
8558
+ Py_DECREF_IMMORTAL(result);
8559
8559
  }
8560
8560
 
8561
8561
  // No rich comparison worked, but maybe compare works.
@@ -8624,7 +8624,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8624
8624
  }
8625
8625
  }
8626
8626
 
8627
- Py_DECREF(result);
8627
+ Py_DECREF_IMMORTAL(result);
8628
8628
  }
8629
8629
  }
8630
8630
 
@@ -8646,7 +8646,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8646
8646
  }
8647
8647
  }
8648
8648
 
8649
- Py_DECREF(result);
8649
+ Py_DECREF_IMMORTAL(result);
8650
8650
  }
8651
8651
 
8652
8652
  f = RICHCOMPARE(type2);
@@ -8667,7 +8667,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8667
8667
  }
8668
8668
  }
8669
8669
 
8670
- Py_DECREF(result);
8670
+ Py_DECREF_IMMORTAL(result);
8671
8671
  }
8672
8672
 
8673
8673
  int c;
@@ -8783,7 +8783,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8783
8783
  }
8784
8784
  }
8785
8785
 
8786
- Py_DECREF(result);
8786
+ Py_DECREF_IMMORTAL(result);
8787
8787
  }
8788
8788
  }
8789
8789
 
@@ -8806,7 +8806,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8806
8806
  }
8807
8807
  }
8808
8808
 
8809
- Py_DECREF(result);
8809
+ Py_DECREF_IMMORTAL(result);
8810
8810
  }
8811
8811
 
8812
8812
  if (checked_reverse_op == false) {
@@ -8829,7 +8829,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8829
8829
  }
8830
8830
  }
8831
8831
 
8832
- Py_DECREF(result);
8832
+ Py_DECREF_IMMORTAL(result);
8833
8833
  }
8834
8834
  }
8835
8835
 
@@ -8902,7 +8902,7 @@ static PyObject *COMPARE_LE_OBJECT_TUPLE_TUPLE(PyObject *operand1, PyObject *ope
8902
8902
 
8903
8903
  // Convert to target type.
8904
8904
  PyObject *result = BOOL_FROM(r);
8905
- Py_INCREF(result);
8905
+ Py_INCREF_IMMORTAL(result);
8906
8906
  return result;
8907
8907
  }
8908
8908
 
@@ -8942,7 +8942,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
8942
8942
  return result;
8943
8943
  }
8944
8944
 
8945
- Py_DECREF(result);
8945
+ Py_DECREF_IMMORTAL(result);
8946
8946
  }
8947
8947
 
8948
8948
  // No rich comparison worked, but maybe compare works.
@@ -8983,7 +8983,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
8983
8983
 
8984
8984
  bool r = c != 0;
8985
8985
  PyObject *result = BOOL_FROM(r);
8986
- Py_INCREF(result);
8986
+ Py_INCREF_IMMORTAL(result);
8987
8987
  return result;
8988
8988
  }
8989
8989
  }
@@ -9003,7 +9003,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9003
9003
  return result;
9004
9004
  }
9005
9005
 
9006
- Py_DECREF(result);
9006
+ Py_DECREF_IMMORTAL(result);
9007
9007
  }
9008
9008
  }
9009
9009
 
@@ -9017,7 +9017,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9017
9017
  return result;
9018
9018
  }
9019
9019
 
9020
- Py_DECREF(result);
9020
+ Py_DECREF_IMMORTAL(result);
9021
9021
  }
9022
9022
 
9023
9023
  f = PyTuple_Type.tp_richcompare;
@@ -9030,7 +9030,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9030
9030
  return result;
9031
9031
  }
9032
9032
 
9033
- Py_DECREF(result);
9033
+ Py_DECREF_IMMORTAL(result);
9034
9034
  }
9035
9035
 
9036
9036
  int c;
@@ -9118,7 +9118,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9118
9118
 
9119
9119
  bool r = c != 0;
9120
9120
  PyObject *result = BOOL_FROM(r);
9121
- Py_INCREF(result);
9121
+ Py_INCREF_IMMORTAL(result);
9122
9122
  return result;
9123
9123
  #else
9124
9124
  bool checked_reverse_op = false;
@@ -9138,7 +9138,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9138
9138
  return result;
9139
9139
  }
9140
9140
 
9141
- Py_DECREF(result);
9141
+ Py_DECREF_IMMORTAL(result);
9142
9142
  }
9143
9143
  }
9144
9144
 
@@ -9153,7 +9153,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9153
9153
  return result;
9154
9154
  }
9155
9155
 
9156
- Py_DECREF(result);
9156
+ Py_DECREF_IMMORTAL(result);
9157
9157
  }
9158
9158
 
9159
9159
  if (checked_reverse_op == false) {
@@ -9168,7 +9168,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9168
9168
  return result;
9169
9169
  }
9170
9170
 
9171
- Py_DECREF(result);
9171
+ Py_DECREF_IMMORTAL(result);
9172
9172
  }
9173
9173
  }
9174
9174
 
@@ -9180,13 +9180,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9180
9180
  case Py_EQ: {
9181
9181
  bool r = operand1 == operand2;
9182
9182
  PyObject *result = BOOL_FROM(r);
9183
- Py_INCREF(result);
9183
+ Py_INCREF_IMMORTAL(result);
9184
9184
  return result;
9185
9185
  }
9186
9186
  case Py_NE: {
9187
9187
  bool r = operand1 != operand2;
9188
9188
  PyObject *result = BOOL_FROM(r);
9189
- Py_INCREF(result);
9189
+ Py_INCREF_IMMORTAL(result);
9190
9190
  return result;
9191
9191
  }
9192
9192
  default:
@@ -9234,7 +9234,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9234
9234
  return result;
9235
9235
  }
9236
9236
 
9237
- Py_DECREF(result);
9237
+ Py_DECREF_IMMORTAL(result);
9238
9238
  }
9239
9239
 
9240
9240
  // No rich comparison worked, but maybe compare works.
@@ -9275,7 +9275,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9275
9275
 
9276
9276
  bool r = c != 0;
9277
9277
  PyObject *result = BOOL_FROM(r);
9278
- Py_INCREF(result);
9278
+ Py_INCREF_IMMORTAL(result);
9279
9279
  return result;
9280
9280
  }
9281
9281
  }
@@ -9295,7 +9295,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9295
9295
  return result;
9296
9296
  }
9297
9297
 
9298
- Py_DECREF(result);
9298
+ Py_DECREF_IMMORTAL(result);
9299
9299
  }
9300
9300
  }
9301
9301
 
@@ -9309,7 +9309,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9309
9309
  return result;
9310
9310
  }
9311
9311
 
9312
- Py_DECREF(result);
9312
+ Py_DECREF_IMMORTAL(result);
9313
9313
  }
9314
9314
 
9315
9315
  f = RICHCOMPARE(type2);
@@ -9322,7 +9322,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9322
9322
  return result;
9323
9323
  }
9324
9324
 
9325
- Py_DECREF(result);
9325
+ Py_DECREF_IMMORTAL(result);
9326
9326
  }
9327
9327
 
9328
9328
  int c;
@@ -9410,7 +9410,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9410
9410
 
9411
9411
  bool r = c != 0;
9412
9412
  PyObject *result = BOOL_FROM(r);
9413
- Py_INCREF(result);
9413
+ Py_INCREF_IMMORTAL(result);
9414
9414
  return result;
9415
9415
  #else
9416
9416
  bool checked_reverse_op = false;
@@ -9430,7 +9430,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9430
9430
  return result;
9431
9431
  }
9432
9432
 
9433
- Py_DECREF(result);
9433
+ Py_DECREF_IMMORTAL(result);
9434
9434
  }
9435
9435
  }
9436
9436
 
@@ -9445,7 +9445,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9445
9445
  return result;
9446
9446
  }
9447
9447
 
9448
- Py_DECREF(result);
9448
+ Py_DECREF_IMMORTAL(result);
9449
9449
  }
9450
9450
 
9451
9451
  if (checked_reverse_op == false) {
@@ -9460,7 +9460,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9460
9460
  return result;
9461
9461
  }
9462
9462
 
9463
- Py_DECREF(result);
9463
+ Py_DECREF_IMMORTAL(result);
9464
9464
  }
9465
9465
  }
9466
9466
 
@@ -9472,13 +9472,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9472
9472
  case Py_EQ: {
9473
9473
  bool r = operand1 == operand2;
9474
9474
  PyObject *result = BOOL_FROM(r);
9475
- Py_INCREF(result);
9475
+ Py_INCREF_IMMORTAL(result);
9476
9476
  return result;
9477
9477
  }
9478
9478
  case Py_NE: {
9479
9479
  bool r = operand1 != operand2;
9480
9480
  PyObject *result = BOOL_FROM(r);
9481
- Py_INCREF(result);
9481
+ Py_INCREF_IMMORTAL(result);
9482
9482
  return result;
9483
9483
  }
9484
9484
  default:
@@ -9587,7 +9587,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9587
9587
  }
9588
9588
  }
9589
9589
 
9590
- Py_DECREF(result);
9590
+ Py_DECREF_IMMORTAL(result);
9591
9591
  }
9592
9592
 
9593
9593
  // No rich comparison worked, but maybe compare works.
@@ -9656,7 +9656,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9656
9656
  }
9657
9657
  }
9658
9658
 
9659
- Py_DECREF(result);
9659
+ Py_DECREF_IMMORTAL(result);
9660
9660
  }
9661
9661
  }
9662
9662
 
@@ -9678,7 +9678,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9678
9678
  }
9679
9679
  }
9680
9680
 
9681
- Py_DECREF(result);
9681
+ Py_DECREF_IMMORTAL(result);
9682
9682
  }
9683
9683
 
9684
9684
  f = PyTuple_Type.tp_richcompare;
@@ -9699,7 +9699,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9699
9699
  }
9700
9700
  }
9701
9701
 
9702
- Py_DECREF(result);
9702
+ Py_DECREF_IMMORTAL(result);
9703
9703
  }
9704
9704
 
9705
9705
  int c;
@@ -9815,7 +9815,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9815
9815
  }
9816
9816
  }
9817
9817
 
9818
- Py_DECREF(result);
9818
+ Py_DECREF_IMMORTAL(result);
9819
9819
  }
9820
9820
  }
9821
9821
 
@@ -9838,7 +9838,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9838
9838
  }
9839
9839
  }
9840
9840
 
9841
- Py_DECREF(result);
9841
+ Py_DECREF_IMMORTAL(result);
9842
9842
  }
9843
9843
 
9844
9844
  if (checked_reverse_op == false) {
@@ -9861,7 +9861,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9861
9861
  }
9862
9862
  }
9863
9863
 
9864
- Py_DECREF(result);
9864
+ Py_DECREF_IMMORTAL(result);
9865
9865
  }
9866
9866
  }
9867
9867
 
@@ -9935,7 +9935,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
9935
9935
  }
9936
9936
  }
9937
9937
 
9938
- Py_DECREF(result);
9938
+ Py_DECREF_IMMORTAL(result);
9939
9939
  }
9940
9940
 
9941
9941
  // No rich comparison worked, but maybe compare works.
@@ -10004,7 +10004,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10004
10004
  }
10005
10005
  }
10006
10006
 
10007
- Py_DECREF(result);
10007
+ Py_DECREF_IMMORTAL(result);
10008
10008
  }
10009
10009
  }
10010
10010
 
@@ -10026,7 +10026,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10026
10026
  }
10027
10027
  }
10028
10028
 
10029
- Py_DECREF(result);
10029
+ Py_DECREF_IMMORTAL(result);
10030
10030
  }
10031
10031
 
10032
10032
  f = RICHCOMPARE(type2);
@@ -10047,7 +10047,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10047
10047
  }
10048
10048
  }
10049
10049
 
10050
- Py_DECREF(result);
10050
+ Py_DECREF_IMMORTAL(result);
10051
10051
  }
10052
10052
 
10053
10053
  int c;
@@ -10163,7 +10163,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10163
10163
  }
10164
10164
  }
10165
10165
 
10166
- Py_DECREF(result);
10166
+ Py_DECREF_IMMORTAL(result);
10167
10167
  }
10168
10168
  }
10169
10169
 
@@ -10186,7 +10186,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10186
10186
  }
10187
10187
  }
10188
10188
 
10189
- Py_DECREF(result);
10189
+ Py_DECREF_IMMORTAL(result);
10190
10190
  }
10191
10191
 
10192
10192
  if (checked_reverse_op == false) {
@@ -10209,7 +10209,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10209
10209
  }
10210
10210
  }
10211
10211
 
10212
- Py_DECREF(result);
10212
+ Py_DECREF_IMMORTAL(result);
10213
10213
  }
10214
10214
  }
10215
10215
 
@@ -10289,7 +10289,7 @@ static PyObject *COMPARE_LE_OBJECT_LIST_LIST(PyObject *operand1, PyObject *opera
10289
10289
 
10290
10290
  // Convert to target type.
10291
10291
  PyObject *result = BOOL_FROM(r);
10292
- Py_INCREF(result);
10292
+ Py_INCREF_IMMORTAL(result);
10293
10293
  return result;
10294
10294
  }
10295
10295
 
@@ -10329,7 +10329,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10329
10329
  return result;
10330
10330
  }
10331
10331
 
10332
- Py_DECREF(result);
10332
+ Py_DECREF_IMMORTAL(result);
10333
10333
  }
10334
10334
 
10335
10335
  // No rich comparison worked, but maybe compare works.
@@ -10370,7 +10370,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10370
10370
 
10371
10371
  bool r = c != 0;
10372
10372
  PyObject *result = BOOL_FROM(r);
10373
- Py_INCREF(result);
10373
+ Py_INCREF_IMMORTAL(result);
10374
10374
  return result;
10375
10375
  }
10376
10376
  }
@@ -10390,7 +10390,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10390
10390
  return result;
10391
10391
  }
10392
10392
 
10393
- Py_DECREF(result);
10393
+ Py_DECREF_IMMORTAL(result);
10394
10394
  }
10395
10395
  }
10396
10396
 
@@ -10404,7 +10404,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10404
10404
  return result;
10405
10405
  }
10406
10406
 
10407
- Py_DECREF(result);
10407
+ Py_DECREF_IMMORTAL(result);
10408
10408
  }
10409
10409
 
10410
10410
  f = PyList_Type.tp_richcompare;
@@ -10417,7 +10417,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10417
10417
  return result;
10418
10418
  }
10419
10419
 
10420
- Py_DECREF(result);
10420
+ Py_DECREF_IMMORTAL(result);
10421
10421
  }
10422
10422
 
10423
10423
  int c;
@@ -10505,7 +10505,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10505
10505
 
10506
10506
  bool r = c != 0;
10507
10507
  PyObject *result = BOOL_FROM(r);
10508
- Py_INCREF(result);
10508
+ Py_INCREF_IMMORTAL(result);
10509
10509
  return result;
10510
10510
  #else
10511
10511
  bool checked_reverse_op = false;
@@ -10525,7 +10525,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10525
10525
  return result;
10526
10526
  }
10527
10527
 
10528
- Py_DECREF(result);
10528
+ Py_DECREF_IMMORTAL(result);
10529
10529
  }
10530
10530
  }
10531
10531
 
@@ -10540,7 +10540,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10540
10540
  return result;
10541
10541
  }
10542
10542
 
10543
- Py_DECREF(result);
10543
+ Py_DECREF_IMMORTAL(result);
10544
10544
  }
10545
10545
 
10546
10546
  if (checked_reverse_op == false) {
@@ -10555,7 +10555,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10555
10555
  return result;
10556
10556
  }
10557
10557
 
10558
- Py_DECREF(result);
10558
+ Py_DECREF_IMMORTAL(result);
10559
10559
  }
10560
10560
  }
10561
10561
 
@@ -10567,13 +10567,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10567
10567
  case Py_EQ: {
10568
10568
  bool r = operand1 == operand2;
10569
10569
  PyObject *result = BOOL_FROM(r);
10570
- Py_INCREF(result);
10570
+ Py_INCREF_IMMORTAL(result);
10571
10571
  return result;
10572
10572
  }
10573
10573
  case Py_NE: {
10574
10574
  bool r = operand1 != operand2;
10575
10575
  PyObject *result = BOOL_FROM(r);
10576
- Py_INCREF(result);
10576
+ Py_INCREF_IMMORTAL(result);
10577
10577
  return result;
10578
10578
  }
10579
10579
  default:
@@ -10621,7 +10621,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10621
10621
  return result;
10622
10622
  }
10623
10623
 
10624
- Py_DECREF(result);
10624
+ Py_DECREF_IMMORTAL(result);
10625
10625
  }
10626
10626
 
10627
10627
  // No rich comparison worked, but maybe compare works.
@@ -10662,7 +10662,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10662
10662
 
10663
10663
  bool r = c != 0;
10664
10664
  PyObject *result = BOOL_FROM(r);
10665
- Py_INCREF(result);
10665
+ Py_INCREF_IMMORTAL(result);
10666
10666
  return result;
10667
10667
  }
10668
10668
  }
@@ -10682,7 +10682,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10682
10682
  return result;
10683
10683
  }
10684
10684
 
10685
- Py_DECREF(result);
10685
+ Py_DECREF_IMMORTAL(result);
10686
10686
  }
10687
10687
  }
10688
10688
 
@@ -10696,7 +10696,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10696
10696
  return result;
10697
10697
  }
10698
10698
 
10699
- Py_DECREF(result);
10699
+ Py_DECREF_IMMORTAL(result);
10700
10700
  }
10701
10701
 
10702
10702
  f = RICHCOMPARE(type2);
@@ -10709,7 +10709,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10709
10709
  return result;
10710
10710
  }
10711
10711
 
10712
- Py_DECREF(result);
10712
+ Py_DECREF_IMMORTAL(result);
10713
10713
  }
10714
10714
 
10715
10715
  int c;
@@ -10797,7 +10797,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10797
10797
 
10798
10798
  bool r = c != 0;
10799
10799
  PyObject *result = BOOL_FROM(r);
10800
- Py_INCREF(result);
10800
+ Py_INCREF_IMMORTAL(result);
10801
10801
  return result;
10802
10802
  #else
10803
10803
  bool checked_reverse_op = false;
@@ -10817,7 +10817,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10817
10817
  return result;
10818
10818
  }
10819
10819
 
10820
- Py_DECREF(result);
10820
+ Py_DECREF_IMMORTAL(result);
10821
10821
  }
10822
10822
  }
10823
10823
 
@@ -10832,7 +10832,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10832
10832
  return result;
10833
10833
  }
10834
10834
 
10835
- Py_DECREF(result);
10835
+ Py_DECREF_IMMORTAL(result);
10836
10836
  }
10837
10837
 
10838
10838
  if (checked_reverse_op == false) {
@@ -10847,7 +10847,7 @@ PyObject *RICH_COMPARE_LE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10847
10847
  return result;
10848
10848
  }
10849
10849
 
10850
- Py_DECREF(result);
10850
+ Py_DECREF_IMMORTAL(result);
10851
10851
  }
10852
10852
  }
10853
10853
 
@@ -10859,13 +10859,13 @@ PyObject *RICH_COMPARE_LE_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10859
10859
  case Py_EQ: {
10860
10860
  bool r = operand1 == operand2;
10861
10861
  PyObject *result = BOOL_FROM(r);
10862
- Py_INCREF(result);
10862
+ Py_INCREF_IMMORTAL(result);
10863
10863
  return result;
10864
10864
  }
10865
10865
  case Py_NE: {
10866
10866
  bool r = operand1 != operand2;
10867
10867
  PyObject *result = BOOL_FROM(r);
10868
- Py_INCREF(result);
10868
+ Py_INCREF_IMMORTAL(result);
10869
10869
  return result;
10870
10870
  }
10871
10871
  default:
@@ -10975,7 +10975,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
10975
10975
  }
10976
10976
  }
10977
10977
 
10978
- Py_DECREF(result);
10978
+ Py_DECREF_IMMORTAL(result);
10979
10979
  }
10980
10980
 
10981
10981
  // No rich comparison worked, but maybe compare works.
@@ -11044,7 +11044,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11044
11044
  }
11045
11045
  }
11046
11046
 
11047
- Py_DECREF(result);
11047
+ Py_DECREF_IMMORTAL(result);
11048
11048
  }
11049
11049
  }
11050
11050
 
@@ -11066,7 +11066,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11066
11066
  }
11067
11067
  }
11068
11068
 
11069
- Py_DECREF(result);
11069
+ Py_DECREF_IMMORTAL(result);
11070
11070
  }
11071
11071
 
11072
11072
  f = PyList_Type.tp_richcompare;
@@ -11087,7 +11087,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11087
11087
  }
11088
11088
  }
11089
11089
 
11090
- Py_DECREF(result);
11090
+ Py_DECREF_IMMORTAL(result);
11091
11091
  }
11092
11092
 
11093
11093
  int c;
@@ -11203,7 +11203,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11203
11203
  }
11204
11204
  }
11205
11205
 
11206
- Py_DECREF(result);
11206
+ Py_DECREF_IMMORTAL(result);
11207
11207
  }
11208
11208
  }
11209
11209
 
@@ -11226,7 +11226,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11226
11226
  }
11227
11227
  }
11228
11228
 
11229
- Py_DECREF(result);
11229
+ Py_DECREF_IMMORTAL(result);
11230
11230
  }
11231
11231
 
11232
11232
  if (checked_reverse_op == false) {
@@ -11249,7 +11249,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11249
11249
  }
11250
11250
  }
11251
11251
 
11252
- Py_DECREF(result);
11252
+ Py_DECREF_IMMORTAL(result);
11253
11253
  }
11254
11254
  }
11255
11255
 
@@ -11323,7 +11323,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11323
11323
  }
11324
11324
  }
11325
11325
 
11326
- Py_DECREF(result);
11326
+ Py_DECREF_IMMORTAL(result);
11327
11327
  }
11328
11328
 
11329
11329
  // No rich comparison worked, but maybe compare works.
@@ -11392,7 +11392,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11392
11392
  }
11393
11393
  }
11394
11394
 
11395
- Py_DECREF(result);
11395
+ Py_DECREF_IMMORTAL(result);
11396
11396
  }
11397
11397
  }
11398
11398
 
@@ -11414,7 +11414,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11414
11414
  }
11415
11415
  }
11416
11416
 
11417
- Py_DECREF(result);
11417
+ Py_DECREF_IMMORTAL(result);
11418
11418
  }
11419
11419
 
11420
11420
  f = RICHCOMPARE(type2);
@@ -11435,7 +11435,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11435
11435
  }
11436
11436
  }
11437
11437
 
11438
- Py_DECREF(result);
11438
+ Py_DECREF_IMMORTAL(result);
11439
11439
  }
11440
11440
 
11441
11441
  int c;
@@ -11551,7 +11551,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11551
11551
  }
11552
11552
  }
11553
11553
 
11554
- Py_DECREF(result);
11554
+ Py_DECREF_IMMORTAL(result);
11555
11555
  }
11556
11556
  }
11557
11557
 
@@ -11574,7 +11574,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11574
11574
  }
11575
11575
  }
11576
11576
 
11577
- Py_DECREF(result);
11577
+ Py_DECREF_IMMORTAL(result);
11578
11578
  }
11579
11579
 
11580
11580
  if (checked_reverse_op == false) {
@@ -11597,7 +11597,7 @@ nuitka_bool RICH_COMPARE_LE_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11597
11597
  }
11598
11598
  }
11599
11599
 
11600
- Py_DECREF(result);
11600
+ Py_DECREF_IMMORTAL(result);
11601
11601
  }
11602
11602
  }
11603
11603
 
@@ -11689,7 +11689,7 @@ static PyObject *COMPARE_LE_OBJECT_LONG_CLONG(PyObject *operand1, long operand2)
11689
11689
 
11690
11690
  // Convert to target type.
11691
11691
  PyObject *result = BOOL_FROM(r);
11692
- Py_INCREF(result);
11692
+ Py_INCREF_IMMORTAL(result);
11693
11693
  return result;
11694
11694
  }
11695
11695
  /* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "INT" to Python2 'int'. */
@@ -11775,7 +11775,7 @@ static PyObject *COMPARE_LE_OBJECT_INT_CLONG(PyObject *operand1, long operand2)
11775
11775
 
11776
11776
  // Convert to target type.
11777
11777
  PyObject *result = BOOL_FROM(r);
11778
- Py_INCREF(result);
11778
+ Py_INCREF_IMMORTAL(result);
11779
11779
  return result;
11780
11780
  }
11781
11781
  /* Code referring to "INT" corresponds to Python2 'int' and "CLONG" to C platform long value. */
@@ -11837,7 +11837,7 @@ static PyObject *COMPARE_LE_OBJECT_LONG_DIGIT(PyObject *operand1, long operand2)
11837
11837
 
11838
11838
  // Convert to target type.
11839
11839
  PyObject *result = BOOL_FROM(r);
11840
- Py_INCREF(result);
11840
+ Py_INCREF_IMMORTAL(result);
11841
11841
  return result;
11842
11842
  }
11843
11843
  /* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "DIGIT" to C platform digit value for long
@@ -11898,7 +11898,7 @@ static PyObject *COMPARE_LE_OBJECT_FLOAT_CFLOAT(PyObject *operand1, double opera
11898
11898
 
11899
11899
  // Convert to target type.
11900
11900
  PyObject *result = BOOL_FROM(r);
11901
- Py_INCREF(result);
11901
+ Py_INCREF_IMMORTAL(result);
11902
11902
  return result;
11903
11903
  }
11904
11904
  /* Code referring to "FLOAT" corresponds to Python 'float' and "CFLOAT" to C platform float value. */