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_LT_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
@@ -82,7 +82,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
82
82
  return result;
83
83
  }
84
84
 
85
- Py_DECREF(result);
85
+ Py_DECREF_IMMORTAL(result);
86
86
  }
87
87
 
88
88
  // No rich comparison worked, but maybe compare works.
@@ -123,7 +123,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
123
123
 
124
124
  bool r = c != 0;
125
125
  PyObject *result = BOOL_FROM(r);
126
- Py_INCREF(result);
126
+ Py_INCREF_IMMORTAL(result);
127
127
  return result;
128
128
  }
129
129
  }
@@ -143,7 +143,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
143
143
  return result;
144
144
  }
145
145
 
146
- Py_DECREF(result);
146
+ Py_DECREF_IMMORTAL(result);
147
147
  }
148
148
  }
149
149
 
@@ -157,7 +157,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
157
157
  return result;
158
158
  }
159
159
 
160
- Py_DECREF(result);
160
+ Py_DECREF_IMMORTAL(result);
161
161
  }
162
162
 
163
163
  f = RICHCOMPARE(type2);
@@ -170,7 +170,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
170
170
  return result;
171
171
  }
172
172
 
173
- Py_DECREF(result);
173
+ Py_DECREF_IMMORTAL(result);
174
174
  }
175
175
 
176
176
  int c;
@@ -258,7 +258,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
258
258
 
259
259
  bool r = c != 0;
260
260
  PyObject *result = BOOL_FROM(r);
261
- Py_INCREF(result);
261
+ Py_INCREF_IMMORTAL(result);
262
262
  return result;
263
263
  #else
264
264
  bool checked_reverse_op = false;
@@ -278,7 +278,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
278
278
  return result;
279
279
  }
280
280
 
281
- Py_DECREF(result);
281
+ Py_DECREF_IMMORTAL(result);
282
282
  }
283
283
  }
284
284
 
@@ -293,7 +293,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
293
293
  return result;
294
294
  }
295
295
 
296
- Py_DECREF(result);
296
+ Py_DECREF_IMMORTAL(result);
297
297
  }
298
298
 
299
299
  if (checked_reverse_op == false) {
@@ -308,7 +308,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
308
308
  return result;
309
309
  }
310
310
 
311
- Py_DECREF(result);
311
+ Py_DECREF_IMMORTAL(result);
312
312
  }
313
313
  }
314
314
 
@@ -320,13 +320,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_OBJECT(PyObject *operand1, PyObject *ope
320
320
  case Py_EQ: {
321
321
  bool r = operand1 == operand2;
322
322
  PyObject *result = BOOL_FROM(r);
323
- Py_INCREF(result);
323
+ Py_INCREF_IMMORTAL(result);
324
324
  return result;
325
325
  }
326
326
  case Py_NE: {
327
327
  bool r = operand1 != operand2;
328
328
  PyObject *result = BOOL_FROM(r);
329
- Py_INCREF(result);
329
+ Py_INCREF_IMMORTAL(result);
330
330
  return result;
331
331
  }
332
332
  default:
@@ -386,7 +386,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
386
386
  }
387
387
  }
388
388
 
389
- Py_DECREF(result);
389
+ Py_DECREF_IMMORTAL(result);
390
390
  }
391
391
 
392
392
  // No rich comparison worked, but maybe compare works.
@@ -455,7 +455,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
455
455
  }
456
456
  }
457
457
 
458
- Py_DECREF(result);
458
+ Py_DECREF_IMMORTAL(result);
459
459
  }
460
460
  }
461
461
 
@@ -477,7 +477,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
477
477
  }
478
478
  }
479
479
 
480
- Py_DECREF(result);
480
+ Py_DECREF_IMMORTAL(result);
481
481
  }
482
482
 
483
483
  f = RICHCOMPARE(type2);
@@ -498,7 +498,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
498
498
  }
499
499
  }
500
500
 
501
- Py_DECREF(result);
501
+ Py_DECREF_IMMORTAL(result);
502
502
  }
503
503
 
504
504
  int c;
@@ -614,7 +614,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
614
614
  }
615
615
  }
616
616
 
617
- Py_DECREF(result);
617
+ Py_DECREF_IMMORTAL(result);
618
618
  }
619
619
  }
620
620
 
@@ -637,7 +637,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
637
637
  }
638
638
  }
639
639
 
640
- Py_DECREF(result);
640
+ Py_DECREF_IMMORTAL(result);
641
641
  }
642
642
 
643
643
  if (checked_reverse_op == false) {
@@ -660,7 +660,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_OBJECT(PyObject *operand1, PyObject *op
660
660
  }
661
661
  }
662
662
 
663
- Py_DECREF(result);
663
+ Py_DECREF_IMMORTAL(result);
664
664
  }
665
665
  }
666
666
 
@@ -709,7 +709,7 @@ static PyObject *COMPARE_LT_OBJECT_STR_STR(PyObject *operand1, PyObject *operand
709
709
 
710
710
  // Convert to target type.
711
711
  PyObject *result = BOOL_FROM(r);
712
- Py_INCREF(result);
712
+ Py_INCREF_IMMORTAL(result);
713
713
  return result;
714
714
  }
715
715
 
@@ -737,7 +737,7 @@ static PyObject *COMPARE_LT_OBJECT_STR_STR(PyObject *operand1, PyObject *operand
737
737
 
738
738
  // Convert to target type.
739
739
  PyObject *result = BOOL_FROM(c != 0);
740
- Py_INCREF(result);
740
+ Py_INCREF_IMMORTAL(result);
741
741
  return result;
742
742
  }
743
743
  /* Code referring to "OBJECT" corresponds to any Python object and "STR" to Python2 'str'. */
@@ -774,7 +774,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
774
774
  return result;
775
775
  }
776
776
 
777
- Py_DECREF(result);
777
+ Py_DECREF_IMMORTAL(result);
778
778
  }
779
779
 
780
780
  // No rich comparison worked, but maybe compare works.
@@ -815,7 +815,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
815
815
 
816
816
  bool r = c != 0;
817
817
  PyObject *result = BOOL_FROM(r);
818
- Py_INCREF(result);
818
+ Py_INCREF_IMMORTAL(result);
819
819
  return result;
820
820
  }
821
821
  }
@@ -835,7 +835,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
835
835
  return result;
836
836
  }
837
837
 
838
- Py_DECREF(result);
838
+ Py_DECREF_IMMORTAL(result);
839
839
  }
840
840
  }
841
841
 
@@ -849,7 +849,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
849
849
  return result;
850
850
  }
851
851
 
852
- Py_DECREF(result);
852
+ Py_DECREF_IMMORTAL(result);
853
853
  }
854
854
 
855
855
  f = PyString_Type.tp_richcompare;
@@ -862,7 +862,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
862
862
  return result;
863
863
  }
864
864
 
865
- Py_DECREF(result);
865
+ Py_DECREF_IMMORTAL(result);
866
866
  }
867
867
 
868
868
  int c;
@@ -950,7 +950,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
950
950
 
951
951
  bool r = c != 0;
952
952
  PyObject *result = BOOL_FROM(r);
953
- Py_INCREF(result);
953
+ Py_INCREF_IMMORTAL(result);
954
954
  return result;
955
955
  #else
956
956
  bool checked_reverse_op = false;
@@ -970,7 +970,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
970
970
  return result;
971
971
  }
972
972
 
973
- Py_DECREF(result);
973
+ Py_DECREF_IMMORTAL(result);
974
974
  }
975
975
  }
976
976
 
@@ -985,7 +985,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
985
985
  return result;
986
986
  }
987
987
 
988
- Py_DECREF(result);
988
+ Py_DECREF_IMMORTAL(result);
989
989
  }
990
990
 
991
991
  if (checked_reverse_op == false) {
@@ -1000,7 +1000,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
1000
1000
  return result;
1001
1001
  }
1002
1002
 
1003
- Py_DECREF(result);
1003
+ Py_DECREF_IMMORTAL(result);
1004
1004
  }
1005
1005
  }
1006
1006
 
@@ -1012,13 +1012,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_STR(PyObject *operand1, PyObject *operan
1012
1012
  case Py_EQ: {
1013
1013
  bool r = operand1 == operand2;
1014
1014
  PyObject *result = BOOL_FROM(r);
1015
- Py_INCREF(result);
1015
+ Py_INCREF_IMMORTAL(result);
1016
1016
  return result;
1017
1017
  }
1018
1018
  case Py_NE: {
1019
1019
  bool r = operand1 != operand2;
1020
1020
  PyObject *result = BOOL_FROM(r);
1021
- Py_INCREF(result);
1021
+ Py_INCREF_IMMORTAL(result);
1022
1022
  return result;
1023
1023
  }
1024
1024
  default:
@@ -1068,7 +1068,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1068
1068
  return result;
1069
1069
  }
1070
1070
 
1071
- Py_DECREF(result);
1071
+ Py_DECREF_IMMORTAL(result);
1072
1072
  }
1073
1073
 
1074
1074
  // No rich comparison worked, but maybe compare works.
@@ -1109,7 +1109,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1109
1109
 
1110
1110
  bool r = c != 0;
1111
1111
  PyObject *result = BOOL_FROM(r);
1112
- Py_INCREF(result);
1112
+ Py_INCREF_IMMORTAL(result);
1113
1113
  return result;
1114
1114
  }
1115
1115
  }
@@ -1129,7 +1129,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1129
1129
  return result;
1130
1130
  }
1131
1131
 
1132
- Py_DECREF(result);
1132
+ Py_DECREF_IMMORTAL(result);
1133
1133
  }
1134
1134
  }
1135
1135
 
@@ -1143,7 +1143,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1143
1143
  return result;
1144
1144
  }
1145
1145
 
1146
- Py_DECREF(result);
1146
+ Py_DECREF_IMMORTAL(result);
1147
1147
  }
1148
1148
 
1149
1149
  f = RICHCOMPARE(type2);
@@ -1156,7 +1156,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1156
1156
  return result;
1157
1157
  }
1158
1158
 
1159
- Py_DECREF(result);
1159
+ Py_DECREF_IMMORTAL(result);
1160
1160
  }
1161
1161
 
1162
1162
  int c;
@@ -1244,7 +1244,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1244
1244
 
1245
1245
  bool r = c != 0;
1246
1246
  PyObject *result = BOOL_FROM(r);
1247
- Py_INCREF(result);
1247
+ Py_INCREF_IMMORTAL(result);
1248
1248
  return result;
1249
1249
  #else
1250
1250
  bool checked_reverse_op = false;
@@ -1264,7 +1264,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1264
1264
  return result;
1265
1265
  }
1266
1266
 
1267
- Py_DECREF(result);
1267
+ Py_DECREF_IMMORTAL(result);
1268
1268
  }
1269
1269
  }
1270
1270
 
@@ -1279,7 +1279,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1279
1279
  return result;
1280
1280
  }
1281
1281
 
1282
- Py_DECREF(result);
1282
+ Py_DECREF_IMMORTAL(result);
1283
1283
  }
1284
1284
 
1285
1285
  if (checked_reverse_op == false) {
@@ -1294,7 +1294,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1294
1294
  return result;
1295
1295
  }
1296
1296
 
1297
- Py_DECREF(result);
1297
+ Py_DECREF_IMMORTAL(result);
1298
1298
  }
1299
1299
  }
1300
1300
 
@@ -1306,13 +1306,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_STR_OBJECT(PyObject *operand1, PyObject *operan
1306
1306
  case Py_EQ: {
1307
1307
  bool r = operand1 == operand2;
1308
1308
  PyObject *result = BOOL_FROM(r);
1309
- Py_INCREF(result);
1309
+ Py_INCREF_IMMORTAL(result);
1310
1310
  return result;
1311
1311
  }
1312
1312
  case Py_NE: {
1313
1313
  bool r = operand1 != operand2;
1314
1314
  PyObject *result = BOOL_FROM(r);
1315
- Py_INCREF(result);
1315
+ Py_INCREF_IMMORTAL(result);
1316
1316
  return result;
1317
1317
  }
1318
1318
  default:
@@ -1432,7 +1432,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1432
1432
  }
1433
1433
  }
1434
1434
 
1435
- Py_DECREF(result);
1435
+ Py_DECREF_IMMORTAL(result);
1436
1436
  }
1437
1437
 
1438
1438
  // No rich comparison worked, but maybe compare works.
@@ -1501,7 +1501,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1501
1501
  }
1502
1502
  }
1503
1503
 
1504
- Py_DECREF(result);
1504
+ Py_DECREF_IMMORTAL(result);
1505
1505
  }
1506
1506
  }
1507
1507
 
@@ -1523,7 +1523,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1523
1523
  }
1524
1524
  }
1525
1525
 
1526
- Py_DECREF(result);
1526
+ Py_DECREF_IMMORTAL(result);
1527
1527
  }
1528
1528
 
1529
1529
  f = PyString_Type.tp_richcompare;
@@ -1544,7 +1544,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1544
1544
  }
1545
1545
  }
1546
1546
 
1547
- Py_DECREF(result);
1547
+ Py_DECREF_IMMORTAL(result);
1548
1548
  }
1549
1549
 
1550
1550
  int c;
@@ -1660,7 +1660,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1660
1660
  }
1661
1661
  }
1662
1662
 
1663
- Py_DECREF(result);
1663
+ Py_DECREF_IMMORTAL(result);
1664
1664
  }
1665
1665
  }
1666
1666
 
@@ -1683,7 +1683,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1683
1683
  }
1684
1684
  }
1685
1685
 
1686
- Py_DECREF(result);
1686
+ Py_DECREF_IMMORTAL(result);
1687
1687
  }
1688
1688
 
1689
1689
  if (checked_reverse_op == false) {
@@ -1706,7 +1706,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1706
1706
  }
1707
1707
  }
1708
1708
 
1709
- Py_DECREF(result);
1709
+ Py_DECREF_IMMORTAL(result);
1710
1710
  }
1711
1711
  }
1712
1712
 
@@ -1782,7 +1782,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1782
1782
  }
1783
1783
  }
1784
1784
 
1785
- Py_DECREF(result);
1785
+ Py_DECREF_IMMORTAL(result);
1786
1786
  }
1787
1787
 
1788
1788
  // No rich comparison worked, but maybe compare works.
@@ -1851,7 +1851,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1851
1851
  }
1852
1852
  }
1853
1853
 
1854
- Py_DECREF(result);
1854
+ Py_DECREF_IMMORTAL(result);
1855
1855
  }
1856
1856
  }
1857
1857
 
@@ -1873,7 +1873,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1873
1873
  }
1874
1874
  }
1875
1875
 
1876
- Py_DECREF(result);
1876
+ Py_DECREF_IMMORTAL(result);
1877
1877
  }
1878
1878
 
1879
1879
  f = RICHCOMPARE(type2);
@@ -1894,7 +1894,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1894
1894
  }
1895
1895
  }
1896
1896
 
1897
- Py_DECREF(result);
1897
+ Py_DECREF_IMMORTAL(result);
1898
1898
  }
1899
1899
 
1900
1900
  int c;
@@ -2010,7 +2010,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
2010
2010
  }
2011
2011
  }
2012
2012
 
2013
- Py_DECREF(result);
2013
+ Py_DECREF_IMMORTAL(result);
2014
2014
  }
2015
2015
  }
2016
2016
 
@@ -2033,7 +2033,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
2033
2033
  }
2034
2034
  }
2035
2035
 
2036
- Py_DECREF(result);
2036
+ Py_DECREF_IMMORTAL(result);
2037
2037
  }
2038
2038
 
2039
2039
  if (checked_reverse_op == false) {
@@ -2056,7 +2056,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
2056
2056
  }
2057
2057
  }
2058
2058
 
2059
- Py_DECREF(result);
2059
+ Py_DECREF_IMMORTAL(result);
2060
2060
  }
2061
2061
  }
2062
2062
 
@@ -2104,7 +2104,7 @@ static PyObject *COMPARE_LT_OBJECT_UNICODE_UNICODE(PyObject *operand1, PyObject
2104
2104
 
2105
2105
  // Convert to target type.
2106
2106
  PyObject *result = BOOL_FROM(r);
2107
- Py_INCREF(result);
2107
+ Py_INCREF_IMMORTAL(result);
2108
2108
  return result;
2109
2109
  }
2110
2110
 
@@ -2147,7 +2147,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2147
2147
  return result;
2148
2148
  }
2149
2149
 
2150
- Py_DECREF(result);
2150
+ Py_DECREF_IMMORTAL(result);
2151
2151
  }
2152
2152
 
2153
2153
  // No rich comparison worked, but maybe compare works.
@@ -2188,7 +2188,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2188
2188
 
2189
2189
  bool r = c != 0;
2190
2190
  PyObject *result = BOOL_FROM(r);
2191
- Py_INCREF(result);
2191
+ Py_INCREF_IMMORTAL(result);
2192
2192
  return result;
2193
2193
  }
2194
2194
  }
@@ -2208,7 +2208,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2208
2208
  return result;
2209
2209
  }
2210
2210
 
2211
- Py_DECREF(result);
2211
+ Py_DECREF_IMMORTAL(result);
2212
2212
  }
2213
2213
  }
2214
2214
 
@@ -2222,7 +2222,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2222
2222
  return result;
2223
2223
  }
2224
2224
 
2225
- Py_DECREF(result);
2225
+ Py_DECREF_IMMORTAL(result);
2226
2226
  }
2227
2227
 
2228
2228
  f = PyUnicode_Type.tp_richcompare;
@@ -2235,7 +2235,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2235
2235
  return result;
2236
2236
  }
2237
2237
 
2238
- Py_DECREF(result);
2238
+ Py_DECREF_IMMORTAL(result);
2239
2239
  }
2240
2240
 
2241
2241
  int c;
@@ -2323,7 +2323,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2323
2323
 
2324
2324
  bool r = c != 0;
2325
2325
  PyObject *result = BOOL_FROM(r);
2326
- Py_INCREF(result);
2326
+ Py_INCREF_IMMORTAL(result);
2327
2327
  return result;
2328
2328
  #else
2329
2329
  bool checked_reverse_op = false;
@@ -2343,7 +2343,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2343
2343
  return result;
2344
2344
  }
2345
2345
 
2346
- Py_DECREF(result);
2346
+ Py_DECREF_IMMORTAL(result);
2347
2347
  }
2348
2348
  }
2349
2349
 
@@ -2358,7 +2358,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2358
2358
  return result;
2359
2359
  }
2360
2360
 
2361
- Py_DECREF(result);
2361
+ Py_DECREF_IMMORTAL(result);
2362
2362
  }
2363
2363
 
2364
2364
  if (checked_reverse_op == false) {
@@ -2373,7 +2373,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2373
2373
  return result;
2374
2374
  }
2375
2375
 
2376
- Py_DECREF(result);
2376
+ Py_DECREF_IMMORTAL(result);
2377
2377
  }
2378
2378
  }
2379
2379
 
@@ -2385,13 +2385,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2385
2385
  case Py_EQ: {
2386
2386
  bool r = operand1 == operand2;
2387
2387
  PyObject *result = BOOL_FROM(r);
2388
- Py_INCREF(result);
2388
+ Py_INCREF_IMMORTAL(result);
2389
2389
  return result;
2390
2390
  }
2391
2391
  case Py_NE: {
2392
2392
  bool r = operand1 != operand2;
2393
2393
  PyObject *result = BOOL_FROM(r);
2394
- Py_INCREF(result);
2394
+ Py_INCREF_IMMORTAL(result);
2395
2395
  return result;
2396
2396
  }
2397
2397
  default:
@@ -2441,7 +2441,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2441
2441
  return result;
2442
2442
  }
2443
2443
 
2444
- Py_DECREF(result);
2444
+ Py_DECREF_IMMORTAL(result);
2445
2445
  }
2446
2446
 
2447
2447
  // No rich comparison worked, but maybe compare works.
@@ -2482,7 +2482,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2482
2482
 
2483
2483
  bool r = c != 0;
2484
2484
  PyObject *result = BOOL_FROM(r);
2485
- Py_INCREF(result);
2485
+ Py_INCREF_IMMORTAL(result);
2486
2486
  return result;
2487
2487
  }
2488
2488
  }
@@ -2502,7 +2502,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2502
2502
  return result;
2503
2503
  }
2504
2504
 
2505
- Py_DECREF(result);
2505
+ Py_DECREF_IMMORTAL(result);
2506
2506
  }
2507
2507
  }
2508
2508
 
@@ -2516,7 +2516,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2516
2516
  return result;
2517
2517
  }
2518
2518
 
2519
- Py_DECREF(result);
2519
+ Py_DECREF_IMMORTAL(result);
2520
2520
  }
2521
2521
 
2522
2522
  f = RICHCOMPARE(type2);
@@ -2529,7 +2529,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2529
2529
  return result;
2530
2530
  }
2531
2531
 
2532
- Py_DECREF(result);
2532
+ Py_DECREF_IMMORTAL(result);
2533
2533
  }
2534
2534
 
2535
2535
  int c;
@@ -2617,7 +2617,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2617
2617
 
2618
2618
  bool r = c != 0;
2619
2619
  PyObject *result = BOOL_FROM(r);
2620
- Py_INCREF(result);
2620
+ Py_INCREF_IMMORTAL(result);
2621
2621
  return result;
2622
2622
  #else
2623
2623
  bool checked_reverse_op = false;
@@ -2637,7 +2637,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2637
2637
  return result;
2638
2638
  }
2639
2639
 
2640
- Py_DECREF(result);
2640
+ Py_DECREF_IMMORTAL(result);
2641
2641
  }
2642
2642
  }
2643
2643
 
@@ -2652,7 +2652,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2652
2652
  return result;
2653
2653
  }
2654
2654
 
2655
- Py_DECREF(result);
2655
+ Py_DECREF_IMMORTAL(result);
2656
2656
  }
2657
2657
 
2658
2658
  if (checked_reverse_op == false) {
@@ -2667,7 +2667,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2667
2667
  return result;
2668
2668
  }
2669
2669
 
2670
- Py_DECREF(result);
2670
+ Py_DECREF_IMMORTAL(result);
2671
2671
  }
2672
2672
  }
2673
2673
 
@@ -2679,13 +2679,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2679
2679
  case Py_EQ: {
2680
2680
  bool r = operand1 == operand2;
2681
2681
  PyObject *result = BOOL_FROM(r);
2682
- Py_INCREF(result);
2682
+ Py_INCREF_IMMORTAL(result);
2683
2683
  return result;
2684
2684
  }
2685
2685
  case Py_NE: {
2686
2686
  bool r = operand1 != operand2;
2687
2687
  PyObject *result = BOOL_FROM(r);
2688
- Py_INCREF(result);
2688
+ Py_INCREF_IMMORTAL(result);
2689
2689
  return result;
2690
2690
  }
2691
2691
  default:
@@ -2732,7 +2732,7 @@ static bool COMPARE_LT_CBOOL_UNICODE_UNICODE(PyObject *operand1, PyObject *opera
2732
2732
 
2733
2733
  // Convert to target type if necessary
2734
2734
  bool result = r == Py_True;
2735
- Py_DECREF(r);
2735
+ Py_DECREF_IMMORTAL(r);
2736
2736
 
2737
2737
  return result;
2738
2738
  }
@@ -2785,7 +2785,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2785
2785
  }
2786
2786
  }
2787
2787
 
2788
- Py_DECREF(result);
2788
+ Py_DECREF_IMMORTAL(result);
2789
2789
  }
2790
2790
 
2791
2791
  // No rich comparison worked, but maybe compare works.
@@ -2854,7 +2854,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2854
2854
  }
2855
2855
  }
2856
2856
 
2857
- Py_DECREF(result);
2857
+ Py_DECREF_IMMORTAL(result);
2858
2858
  }
2859
2859
  }
2860
2860
 
@@ -2876,7 +2876,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2876
2876
  }
2877
2877
  }
2878
2878
 
2879
- Py_DECREF(result);
2879
+ Py_DECREF_IMMORTAL(result);
2880
2880
  }
2881
2881
 
2882
2882
  f = PyUnicode_Type.tp_richcompare;
@@ -2897,7 +2897,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2897
2897
  }
2898
2898
  }
2899
2899
 
2900
- Py_DECREF(result);
2900
+ Py_DECREF_IMMORTAL(result);
2901
2901
  }
2902
2902
 
2903
2903
  int c;
@@ -3013,7 +3013,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
3013
3013
  }
3014
3014
  }
3015
3015
 
3016
- Py_DECREF(result);
3016
+ Py_DECREF_IMMORTAL(result);
3017
3017
  }
3018
3018
  }
3019
3019
 
@@ -3036,7 +3036,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
3036
3036
  }
3037
3037
  }
3038
3038
 
3039
- Py_DECREF(result);
3039
+ Py_DECREF_IMMORTAL(result);
3040
3040
  }
3041
3041
 
3042
3042
  if (checked_reverse_op == false) {
@@ -3059,7 +3059,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
3059
3059
  }
3060
3060
  }
3061
3061
 
3062
- Py_DECREF(result);
3062
+ Py_DECREF_IMMORTAL(result);
3063
3063
  }
3064
3064
  }
3065
3065
 
@@ -3135,7 +3135,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3135
3135
  }
3136
3136
  }
3137
3137
 
3138
- Py_DECREF(result);
3138
+ Py_DECREF_IMMORTAL(result);
3139
3139
  }
3140
3140
 
3141
3141
  // No rich comparison worked, but maybe compare works.
@@ -3204,7 +3204,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3204
3204
  }
3205
3205
  }
3206
3206
 
3207
- Py_DECREF(result);
3207
+ Py_DECREF_IMMORTAL(result);
3208
3208
  }
3209
3209
  }
3210
3210
 
@@ -3226,7 +3226,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3226
3226
  }
3227
3227
  }
3228
3228
 
3229
- Py_DECREF(result);
3229
+ Py_DECREF_IMMORTAL(result);
3230
3230
  }
3231
3231
 
3232
3232
  f = RICHCOMPARE(type2);
@@ -3247,7 +3247,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3247
3247
  }
3248
3248
  }
3249
3249
 
3250
- Py_DECREF(result);
3250
+ Py_DECREF_IMMORTAL(result);
3251
3251
  }
3252
3252
 
3253
3253
  int c;
@@ -3363,7 +3363,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3363
3363
  }
3364
3364
  }
3365
3365
 
3366
- Py_DECREF(result);
3366
+ Py_DECREF_IMMORTAL(result);
3367
3367
  }
3368
3368
  }
3369
3369
 
@@ -3386,7 +3386,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3386
3386
  }
3387
3387
  }
3388
3388
 
3389
- Py_DECREF(result);
3389
+ Py_DECREF_IMMORTAL(result);
3390
3390
  }
3391
3391
 
3392
3392
  if (checked_reverse_op == false) {
@@ -3409,7 +3409,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3409
3409
  }
3410
3410
  }
3411
3411
 
3412
- Py_DECREF(result);
3412
+ Py_DECREF_IMMORTAL(result);
3413
3413
  }
3414
3414
  }
3415
3415
 
@@ -3459,7 +3459,7 @@ static PyObject *COMPARE_LT_OBJECT_BYTES_BYTES(PyObject *operand1, PyObject *ope
3459
3459
 
3460
3460
  // Convert to target type.
3461
3461
  PyObject *result = BOOL_FROM(r);
3462
- Py_INCREF(result);
3462
+ Py_INCREF_IMMORTAL(result);
3463
3463
  return result;
3464
3464
  }
3465
3465
 
@@ -3487,7 +3487,7 @@ static PyObject *COMPARE_LT_OBJECT_BYTES_BYTES(PyObject *operand1, PyObject *ope
3487
3487
 
3488
3488
  // Convert to target type.
3489
3489
  PyObject *result = BOOL_FROM(c != 0);
3490
- Py_INCREF(result);
3490
+ Py_INCREF_IMMORTAL(result);
3491
3491
  return result;
3492
3492
  }
3493
3493
  /* Code referring to "OBJECT" corresponds to any Python object and "BYTES" to Python3 'bytes'. */
@@ -3524,7 +3524,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3524
3524
  return result;
3525
3525
  }
3526
3526
 
3527
- Py_DECREF(result);
3527
+ Py_DECREF_IMMORTAL(result);
3528
3528
  }
3529
3529
 
3530
3530
  // No rich comparison worked, but maybe compare works.
@@ -3565,7 +3565,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3565
3565
 
3566
3566
  bool r = c != 0;
3567
3567
  PyObject *result = BOOL_FROM(r);
3568
- Py_INCREF(result);
3568
+ Py_INCREF_IMMORTAL(result);
3569
3569
  return result;
3570
3570
  }
3571
3571
  }
@@ -3585,7 +3585,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3585
3585
  return result;
3586
3586
  }
3587
3587
 
3588
- Py_DECREF(result);
3588
+ Py_DECREF_IMMORTAL(result);
3589
3589
  }
3590
3590
  }
3591
3591
 
@@ -3599,7 +3599,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3599
3599
  return result;
3600
3600
  }
3601
3601
 
3602
- Py_DECREF(result);
3602
+ Py_DECREF_IMMORTAL(result);
3603
3603
  }
3604
3604
 
3605
3605
  f = PyBytes_Type.tp_richcompare;
@@ -3612,7 +3612,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3612
3612
  return result;
3613
3613
  }
3614
3614
 
3615
- Py_DECREF(result);
3615
+ Py_DECREF_IMMORTAL(result);
3616
3616
  }
3617
3617
 
3618
3618
  int c;
@@ -3700,7 +3700,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3700
3700
 
3701
3701
  bool r = c != 0;
3702
3702
  PyObject *result = BOOL_FROM(r);
3703
- Py_INCREF(result);
3703
+ Py_INCREF_IMMORTAL(result);
3704
3704
  return result;
3705
3705
  #else
3706
3706
  bool checked_reverse_op = false;
@@ -3720,7 +3720,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3720
3720
  return result;
3721
3721
  }
3722
3722
 
3723
- Py_DECREF(result);
3723
+ Py_DECREF_IMMORTAL(result);
3724
3724
  }
3725
3725
  }
3726
3726
 
@@ -3735,7 +3735,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3735
3735
  return result;
3736
3736
  }
3737
3737
 
3738
- Py_DECREF(result);
3738
+ Py_DECREF_IMMORTAL(result);
3739
3739
  }
3740
3740
 
3741
3741
  if (checked_reverse_op == false) {
@@ -3750,7 +3750,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3750
3750
  return result;
3751
3751
  }
3752
3752
 
3753
- Py_DECREF(result);
3753
+ Py_DECREF_IMMORTAL(result);
3754
3754
  }
3755
3755
  }
3756
3756
 
@@ -3762,13 +3762,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3762
3762
  case Py_EQ: {
3763
3763
  bool r = operand1 == operand2;
3764
3764
  PyObject *result = BOOL_FROM(r);
3765
- Py_INCREF(result);
3765
+ Py_INCREF_IMMORTAL(result);
3766
3766
  return result;
3767
3767
  }
3768
3768
  case Py_NE: {
3769
3769
  bool r = operand1 != operand2;
3770
3770
  PyObject *result = BOOL_FROM(r);
3771
- Py_INCREF(result);
3771
+ Py_INCREF_IMMORTAL(result);
3772
3772
  return result;
3773
3773
  }
3774
3774
  default:
@@ -3818,7 +3818,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3818
3818
  return result;
3819
3819
  }
3820
3820
 
3821
- Py_DECREF(result);
3821
+ Py_DECREF_IMMORTAL(result);
3822
3822
  }
3823
3823
 
3824
3824
  // No rich comparison worked, but maybe compare works.
@@ -3859,7 +3859,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3859
3859
 
3860
3860
  bool r = c != 0;
3861
3861
  PyObject *result = BOOL_FROM(r);
3862
- Py_INCREF(result);
3862
+ Py_INCREF_IMMORTAL(result);
3863
3863
  return result;
3864
3864
  }
3865
3865
  }
@@ -3879,7 +3879,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3879
3879
  return result;
3880
3880
  }
3881
3881
 
3882
- Py_DECREF(result);
3882
+ Py_DECREF_IMMORTAL(result);
3883
3883
  }
3884
3884
  }
3885
3885
 
@@ -3893,7 +3893,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3893
3893
  return result;
3894
3894
  }
3895
3895
 
3896
- Py_DECREF(result);
3896
+ Py_DECREF_IMMORTAL(result);
3897
3897
  }
3898
3898
 
3899
3899
  f = RICHCOMPARE(type2);
@@ -3906,7 +3906,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3906
3906
  return result;
3907
3907
  }
3908
3908
 
3909
- Py_DECREF(result);
3909
+ Py_DECREF_IMMORTAL(result);
3910
3910
  }
3911
3911
 
3912
3912
  int c;
@@ -3994,7 +3994,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3994
3994
 
3995
3995
  bool r = c != 0;
3996
3996
  PyObject *result = BOOL_FROM(r);
3997
- Py_INCREF(result);
3997
+ Py_INCREF_IMMORTAL(result);
3998
3998
  return result;
3999
3999
  #else
4000
4000
  bool checked_reverse_op = false;
@@ -4014,7 +4014,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4014
4014
  return result;
4015
4015
  }
4016
4016
 
4017
- Py_DECREF(result);
4017
+ Py_DECREF_IMMORTAL(result);
4018
4018
  }
4019
4019
  }
4020
4020
 
@@ -4029,7 +4029,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4029
4029
  return result;
4030
4030
  }
4031
4031
 
4032
- Py_DECREF(result);
4032
+ Py_DECREF_IMMORTAL(result);
4033
4033
  }
4034
4034
 
4035
4035
  if (checked_reverse_op == false) {
@@ -4044,7 +4044,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4044
4044
  return result;
4045
4045
  }
4046
4046
 
4047
- Py_DECREF(result);
4047
+ Py_DECREF_IMMORTAL(result);
4048
4048
  }
4049
4049
  }
4050
4050
 
@@ -4056,13 +4056,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4056
4056
  case Py_EQ: {
4057
4057
  bool r = operand1 == operand2;
4058
4058
  PyObject *result = BOOL_FROM(r);
4059
- Py_INCREF(result);
4059
+ Py_INCREF_IMMORTAL(result);
4060
4060
  return result;
4061
4061
  }
4062
4062
  case Py_NE: {
4063
4063
  bool r = operand1 != operand2;
4064
4064
  PyObject *result = BOOL_FROM(r);
4065
- Py_INCREF(result);
4065
+ Py_INCREF_IMMORTAL(result);
4066
4066
  return result;
4067
4067
  }
4068
4068
  default:
@@ -4182,7 +4182,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4182
4182
  }
4183
4183
  }
4184
4184
 
4185
- Py_DECREF(result);
4185
+ Py_DECREF_IMMORTAL(result);
4186
4186
  }
4187
4187
 
4188
4188
  // No rich comparison worked, but maybe compare works.
@@ -4251,7 +4251,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4251
4251
  }
4252
4252
  }
4253
4253
 
4254
- Py_DECREF(result);
4254
+ Py_DECREF_IMMORTAL(result);
4255
4255
  }
4256
4256
  }
4257
4257
 
@@ -4273,7 +4273,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4273
4273
  }
4274
4274
  }
4275
4275
 
4276
- Py_DECREF(result);
4276
+ Py_DECREF_IMMORTAL(result);
4277
4277
  }
4278
4278
 
4279
4279
  f = PyBytes_Type.tp_richcompare;
@@ -4294,7 +4294,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4294
4294
  }
4295
4295
  }
4296
4296
 
4297
- Py_DECREF(result);
4297
+ Py_DECREF_IMMORTAL(result);
4298
4298
  }
4299
4299
 
4300
4300
  int c;
@@ -4410,7 +4410,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4410
4410
  }
4411
4411
  }
4412
4412
 
4413
- Py_DECREF(result);
4413
+ Py_DECREF_IMMORTAL(result);
4414
4414
  }
4415
4415
  }
4416
4416
 
@@ -4433,7 +4433,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4433
4433
  }
4434
4434
  }
4435
4435
 
4436
- Py_DECREF(result);
4436
+ Py_DECREF_IMMORTAL(result);
4437
4437
  }
4438
4438
 
4439
4439
  if (checked_reverse_op == false) {
@@ -4456,7 +4456,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4456
4456
  }
4457
4457
  }
4458
4458
 
4459
- Py_DECREF(result);
4459
+ Py_DECREF_IMMORTAL(result);
4460
4460
  }
4461
4461
  }
4462
4462
 
@@ -4532,7 +4532,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4532
4532
  }
4533
4533
  }
4534
4534
 
4535
- Py_DECREF(result);
4535
+ Py_DECREF_IMMORTAL(result);
4536
4536
  }
4537
4537
 
4538
4538
  // No rich comparison worked, but maybe compare works.
@@ -4601,7 +4601,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4601
4601
  }
4602
4602
  }
4603
4603
 
4604
- Py_DECREF(result);
4604
+ Py_DECREF_IMMORTAL(result);
4605
4605
  }
4606
4606
  }
4607
4607
 
@@ -4623,7 +4623,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4623
4623
  }
4624
4624
  }
4625
4625
 
4626
- Py_DECREF(result);
4626
+ Py_DECREF_IMMORTAL(result);
4627
4627
  }
4628
4628
 
4629
4629
  f = RICHCOMPARE(type2);
@@ -4644,7 +4644,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4644
4644
  }
4645
4645
  }
4646
4646
 
4647
- Py_DECREF(result);
4647
+ Py_DECREF_IMMORTAL(result);
4648
4648
  }
4649
4649
 
4650
4650
  int c;
@@ -4760,7 +4760,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4760
4760
  }
4761
4761
  }
4762
4762
 
4763
- Py_DECREF(result);
4763
+ Py_DECREF_IMMORTAL(result);
4764
4764
  }
4765
4765
  }
4766
4766
 
@@ -4783,7 +4783,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4783
4783
  }
4784
4784
  }
4785
4785
 
4786
- Py_DECREF(result);
4786
+ Py_DECREF_IMMORTAL(result);
4787
4787
  }
4788
4788
 
4789
4789
  if (checked_reverse_op == false) {
@@ -4806,7 +4806,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4806
4806
  }
4807
4807
  }
4808
4808
 
4809
- Py_DECREF(result);
4809
+ Py_DECREF_IMMORTAL(result);
4810
4810
  }
4811
4811
  }
4812
4812
 
@@ -4874,7 +4874,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4874
4874
  return result;
4875
4875
  }
4876
4876
 
4877
- Py_DECREF(result);
4877
+ Py_DECREF_IMMORTAL(result);
4878
4878
  }
4879
4879
 
4880
4880
  // No rich comparison worked, but maybe compare works.
@@ -4915,7 +4915,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4915
4915
 
4916
4916
  bool r = c != 0;
4917
4917
  PyObject *result = BOOL_FROM(r);
4918
- Py_INCREF(result);
4918
+ Py_INCREF_IMMORTAL(result);
4919
4919
  return result;
4920
4920
  }
4921
4921
  }
@@ -4935,7 +4935,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4935
4935
  return result;
4936
4936
  }
4937
4937
 
4938
- Py_DECREF(result);
4938
+ Py_DECREF_IMMORTAL(result);
4939
4939
  }
4940
4940
  }
4941
4941
 
@@ -4949,7 +4949,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4949
4949
  return result;
4950
4950
  }
4951
4951
 
4952
- Py_DECREF(result);
4952
+ Py_DECREF_IMMORTAL(result);
4953
4953
  }
4954
4954
 
4955
4955
  f = NULL;
@@ -4962,7 +4962,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4962
4962
  return result;
4963
4963
  }
4964
4964
 
4965
- Py_DECREF(result);
4965
+ Py_DECREF_IMMORTAL(result);
4966
4966
  }
4967
4967
 
4968
4968
  int c;
@@ -5050,7 +5050,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5050
5050
 
5051
5051
  bool r = c != 0;
5052
5052
  PyObject *result = BOOL_FROM(r);
5053
- Py_INCREF(result);
5053
+ Py_INCREF_IMMORTAL(result);
5054
5054
  return result;
5055
5055
  #else
5056
5056
  bool checked_reverse_op = false;
@@ -5070,7 +5070,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5070
5070
  return result;
5071
5071
  }
5072
5072
 
5073
- Py_DECREF(result);
5073
+ Py_DECREF_IMMORTAL(result);
5074
5074
  }
5075
5075
  }
5076
5076
 
@@ -5085,7 +5085,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5085
5085
  return result;
5086
5086
  }
5087
5087
 
5088
- Py_DECREF(result);
5088
+ Py_DECREF_IMMORTAL(result);
5089
5089
  }
5090
5090
 
5091
5091
  if (checked_reverse_op == false) {
@@ -5100,7 +5100,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5100
5100
  return result;
5101
5101
  }
5102
5102
 
5103
- Py_DECREF(result);
5103
+ Py_DECREF_IMMORTAL(result);
5104
5104
  }
5105
5105
  }
5106
5106
 
@@ -5112,13 +5112,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5112
5112
  case Py_EQ: {
5113
5113
  bool r = operand1 == operand2;
5114
5114
  PyObject *result = BOOL_FROM(r);
5115
- Py_INCREF(result);
5115
+ Py_INCREF_IMMORTAL(result);
5116
5116
  return result;
5117
5117
  }
5118
5118
  case Py_NE: {
5119
5119
  bool r = operand1 != operand2;
5120
5120
  PyObject *result = BOOL_FROM(r);
5121
- Py_INCREF(result);
5121
+ Py_INCREF_IMMORTAL(result);
5122
5122
  return result;
5123
5123
  }
5124
5124
  default:
@@ -5168,7 +5168,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5168
5168
  return result;
5169
5169
  }
5170
5170
 
5171
- Py_DECREF(result);
5171
+ Py_DECREF_IMMORTAL(result);
5172
5172
  }
5173
5173
 
5174
5174
  // No rich comparison worked, but maybe compare works.
@@ -5209,7 +5209,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5209
5209
 
5210
5210
  bool r = c != 0;
5211
5211
  PyObject *result = BOOL_FROM(r);
5212
- Py_INCREF(result);
5212
+ Py_INCREF_IMMORTAL(result);
5213
5213
  return result;
5214
5214
  }
5215
5215
  }
@@ -5229,7 +5229,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5229
5229
  return result;
5230
5230
  }
5231
5231
 
5232
- Py_DECREF(result);
5232
+ Py_DECREF_IMMORTAL(result);
5233
5233
  }
5234
5234
  }
5235
5235
 
@@ -5243,7 +5243,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5243
5243
  return result;
5244
5244
  }
5245
5245
 
5246
- Py_DECREF(result);
5246
+ Py_DECREF_IMMORTAL(result);
5247
5247
  }
5248
5248
 
5249
5249
  f = RICHCOMPARE(type2);
@@ -5256,7 +5256,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5256
5256
  return result;
5257
5257
  }
5258
5258
 
5259
- Py_DECREF(result);
5259
+ Py_DECREF_IMMORTAL(result);
5260
5260
  }
5261
5261
 
5262
5262
  int c;
@@ -5344,7 +5344,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5344
5344
 
5345
5345
  bool r = c != 0;
5346
5346
  PyObject *result = BOOL_FROM(r);
5347
- Py_INCREF(result);
5347
+ Py_INCREF_IMMORTAL(result);
5348
5348
  return result;
5349
5349
  #else
5350
5350
  bool checked_reverse_op = false;
@@ -5364,7 +5364,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5364
5364
  return result;
5365
5365
  }
5366
5366
 
5367
- Py_DECREF(result);
5367
+ Py_DECREF_IMMORTAL(result);
5368
5368
  }
5369
5369
  }
5370
5370
 
@@ -5379,7 +5379,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5379
5379
  return result;
5380
5380
  }
5381
5381
 
5382
- Py_DECREF(result);
5382
+ Py_DECREF_IMMORTAL(result);
5383
5383
  }
5384
5384
 
5385
5385
  if (checked_reverse_op == false) {
@@ -5394,7 +5394,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5394
5394
  return result;
5395
5395
  }
5396
5396
 
5397
- Py_DECREF(result);
5397
+ Py_DECREF_IMMORTAL(result);
5398
5398
  }
5399
5399
  }
5400
5400
 
@@ -5406,13 +5406,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5406
5406
  case Py_EQ: {
5407
5407
  bool r = operand1 == operand2;
5408
5408
  PyObject *result = BOOL_FROM(r);
5409
- Py_INCREF(result);
5409
+ Py_INCREF_IMMORTAL(result);
5410
5410
  return result;
5411
5411
  }
5412
5412
  case Py_NE: {
5413
5413
  bool r = operand1 != operand2;
5414
5414
  PyObject *result = BOOL_FROM(r);
5415
- Py_INCREF(result);
5415
+ Py_INCREF_IMMORTAL(result);
5416
5416
  return result;
5417
5417
  }
5418
5418
  default:
@@ -5486,7 +5486,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5486
5486
  }
5487
5487
  }
5488
5488
 
5489
- Py_DECREF(result);
5489
+ Py_DECREF_IMMORTAL(result);
5490
5490
  }
5491
5491
 
5492
5492
  // No rich comparison worked, but maybe compare works.
@@ -5555,7 +5555,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5555
5555
  }
5556
5556
  }
5557
5557
 
5558
- Py_DECREF(result);
5558
+ Py_DECREF_IMMORTAL(result);
5559
5559
  }
5560
5560
  }
5561
5561
 
@@ -5577,7 +5577,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5577
5577
  }
5578
5578
  }
5579
5579
 
5580
- Py_DECREF(result);
5580
+ Py_DECREF_IMMORTAL(result);
5581
5581
  }
5582
5582
 
5583
5583
  f = NULL;
@@ -5598,7 +5598,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5598
5598
  }
5599
5599
  }
5600
5600
 
5601
- Py_DECREF(result);
5601
+ Py_DECREF_IMMORTAL(result);
5602
5602
  }
5603
5603
 
5604
5604
  int c;
@@ -5714,7 +5714,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5714
5714
  }
5715
5715
  }
5716
5716
 
5717
- Py_DECREF(result);
5717
+ Py_DECREF_IMMORTAL(result);
5718
5718
  }
5719
5719
  }
5720
5720
 
@@ -5737,7 +5737,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5737
5737
  }
5738
5738
  }
5739
5739
 
5740
- Py_DECREF(result);
5740
+ Py_DECREF_IMMORTAL(result);
5741
5741
  }
5742
5742
 
5743
5743
  if (checked_reverse_op == false) {
@@ -5760,7 +5760,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5760
5760
  }
5761
5761
  }
5762
5762
 
5763
- Py_DECREF(result);
5763
+ Py_DECREF_IMMORTAL(result);
5764
5764
  }
5765
5765
  }
5766
5766
 
@@ -5836,7 +5836,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5836
5836
  }
5837
5837
  }
5838
5838
 
5839
- Py_DECREF(result);
5839
+ Py_DECREF_IMMORTAL(result);
5840
5840
  }
5841
5841
 
5842
5842
  // No rich comparison worked, but maybe compare works.
@@ -5905,7 +5905,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5905
5905
  }
5906
5906
  }
5907
5907
 
5908
- Py_DECREF(result);
5908
+ Py_DECREF_IMMORTAL(result);
5909
5909
  }
5910
5910
  }
5911
5911
 
@@ -5927,7 +5927,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5927
5927
  }
5928
5928
  }
5929
5929
 
5930
- Py_DECREF(result);
5930
+ Py_DECREF_IMMORTAL(result);
5931
5931
  }
5932
5932
 
5933
5933
  f = RICHCOMPARE(type2);
@@ -5948,7 +5948,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5948
5948
  }
5949
5949
  }
5950
5950
 
5951
- Py_DECREF(result);
5951
+ Py_DECREF_IMMORTAL(result);
5952
5952
  }
5953
5953
 
5954
5954
  int c;
@@ -6064,7 +6064,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6064
6064
  }
6065
6065
  }
6066
6066
 
6067
- Py_DECREF(result);
6067
+ Py_DECREF_IMMORTAL(result);
6068
6068
  }
6069
6069
  }
6070
6070
 
@@ -6087,7 +6087,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6087
6087
  }
6088
6088
  }
6089
6089
 
6090
- Py_DECREF(result);
6090
+ Py_DECREF_IMMORTAL(result);
6091
6091
  }
6092
6092
 
6093
6093
  if (checked_reverse_op == false) {
@@ -6110,7 +6110,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6110
6110
  }
6111
6111
  }
6112
6112
 
6113
- Py_DECREF(result);
6113
+ Py_DECREF_IMMORTAL(result);
6114
6114
  }
6115
6115
  }
6116
6116
 
@@ -6179,7 +6179,7 @@ static PyObject *COMPARE_LT_OBJECT_LONG_LONG(PyObject *operand1, PyObject *opera
6179
6179
 
6180
6180
  // Convert to target type.
6181
6181
  PyObject *result = BOOL_FROM(r);
6182
- Py_INCREF(result);
6182
+ Py_INCREF_IMMORTAL(result);
6183
6183
  return result;
6184
6184
  }
6185
6185
  /* Code referring to "OBJECT" corresponds to any Python object and "LONG" to Python2 'long', Python3 'int'. */
@@ -6216,7 +6216,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6216
6216
  return result;
6217
6217
  }
6218
6218
 
6219
- Py_DECREF(result);
6219
+ Py_DECREF_IMMORTAL(result);
6220
6220
  }
6221
6221
 
6222
6222
  // No rich comparison worked, but maybe compare works.
@@ -6257,7 +6257,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6257
6257
 
6258
6258
  bool r = c != 0;
6259
6259
  PyObject *result = BOOL_FROM(r);
6260
- Py_INCREF(result);
6260
+ Py_INCREF_IMMORTAL(result);
6261
6261
  return result;
6262
6262
  }
6263
6263
  }
@@ -6277,7 +6277,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6277
6277
  return result;
6278
6278
  }
6279
6279
 
6280
- Py_DECREF(result);
6280
+ Py_DECREF_IMMORTAL(result);
6281
6281
  }
6282
6282
  }
6283
6283
 
@@ -6291,7 +6291,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6291
6291
  return result;
6292
6292
  }
6293
6293
 
6294
- Py_DECREF(result);
6294
+ Py_DECREF_IMMORTAL(result);
6295
6295
  }
6296
6296
 
6297
6297
  f = (PYTHON_VERSION < 0x300 ? NULL : PyLong_Type.tp_richcompare);
@@ -6304,7 +6304,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6304
6304
  return result;
6305
6305
  }
6306
6306
 
6307
- Py_DECREF(result);
6307
+ Py_DECREF_IMMORTAL(result);
6308
6308
  }
6309
6309
 
6310
6310
  int c;
@@ -6392,7 +6392,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6392
6392
 
6393
6393
  bool r = c != 0;
6394
6394
  PyObject *result = BOOL_FROM(r);
6395
- Py_INCREF(result);
6395
+ Py_INCREF_IMMORTAL(result);
6396
6396
  return result;
6397
6397
  #else
6398
6398
  bool checked_reverse_op = false;
@@ -6412,7 +6412,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6412
6412
  return result;
6413
6413
  }
6414
6414
 
6415
- Py_DECREF(result);
6415
+ Py_DECREF_IMMORTAL(result);
6416
6416
  }
6417
6417
  }
6418
6418
 
@@ -6427,7 +6427,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6427
6427
  return result;
6428
6428
  }
6429
6429
 
6430
- Py_DECREF(result);
6430
+ Py_DECREF_IMMORTAL(result);
6431
6431
  }
6432
6432
 
6433
6433
  if (checked_reverse_op == false) {
@@ -6442,7 +6442,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6442
6442
  return result;
6443
6443
  }
6444
6444
 
6445
- Py_DECREF(result);
6445
+ Py_DECREF_IMMORTAL(result);
6446
6446
  }
6447
6447
  }
6448
6448
 
@@ -6454,13 +6454,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6454
6454
  case Py_EQ: {
6455
6455
  bool r = operand1 == operand2;
6456
6456
  PyObject *result = BOOL_FROM(r);
6457
- Py_INCREF(result);
6457
+ Py_INCREF_IMMORTAL(result);
6458
6458
  return result;
6459
6459
  }
6460
6460
  case Py_NE: {
6461
6461
  bool r = operand1 != operand2;
6462
6462
  PyObject *result = BOOL_FROM(r);
6463
- Py_INCREF(result);
6463
+ Py_INCREF_IMMORTAL(result);
6464
6464
  return result;
6465
6465
  }
6466
6466
  default:
@@ -6510,7 +6510,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6510
6510
  return result;
6511
6511
  }
6512
6512
 
6513
- Py_DECREF(result);
6513
+ Py_DECREF_IMMORTAL(result);
6514
6514
  }
6515
6515
 
6516
6516
  // No rich comparison worked, but maybe compare works.
@@ -6551,7 +6551,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6551
6551
 
6552
6552
  bool r = c != 0;
6553
6553
  PyObject *result = BOOL_FROM(r);
6554
- Py_INCREF(result);
6554
+ Py_INCREF_IMMORTAL(result);
6555
6555
  return result;
6556
6556
  }
6557
6557
  }
@@ -6571,7 +6571,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6571
6571
  return result;
6572
6572
  }
6573
6573
 
6574
- Py_DECREF(result);
6574
+ Py_DECREF_IMMORTAL(result);
6575
6575
  }
6576
6576
  }
6577
6577
 
@@ -6585,7 +6585,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6585
6585
  return result;
6586
6586
  }
6587
6587
 
6588
- Py_DECREF(result);
6588
+ Py_DECREF_IMMORTAL(result);
6589
6589
  }
6590
6590
 
6591
6591
  f = RICHCOMPARE(type2);
@@ -6598,7 +6598,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6598
6598
  return result;
6599
6599
  }
6600
6600
 
6601
- Py_DECREF(result);
6601
+ Py_DECREF_IMMORTAL(result);
6602
6602
  }
6603
6603
 
6604
6604
  int c;
@@ -6686,7 +6686,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6686
6686
 
6687
6687
  bool r = c != 0;
6688
6688
  PyObject *result = BOOL_FROM(r);
6689
- Py_INCREF(result);
6689
+ Py_INCREF_IMMORTAL(result);
6690
6690
  return result;
6691
6691
  #else
6692
6692
  bool checked_reverse_op = false;
@@ -6706,7 +6706,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6706
6706
  return result;
6707
6707
  }
6708
6708
 
6709
- Py_DECREF(result);
6709
+ Py_DECREF_IMMORTAL(result);
6710
6710
  }
6711
6711
  }
6712
6712
 
@@ -6721,7 +6721,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6721
6721
  return result;
6722
6722
  }
6723
6723
 
6724
- Py_DECREF(result);
6724
+ Py_DECREF_IMMORTAL(result);
6725
6725
  }
6726
6726
 
6727
6727
  if (checked_reverse_op == false) {
@@ -6736,7 +6736,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6736
6736
  return result;
6737
6737
  }
6738
6738
 
6739
- Py_DECREF(result);
6739
+ Py_DECREF_IMMORTAL(result);
6740
6740
  }
6741
6741
  }
6742
6742
 
@@ -6748,13 +6748,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6748
6748
  case Py_EQ: {
6749
6749
  bool r = operand1 == operand2;
6750
6750
  PyObject *result = BOOL_FROM(r);
6751
- Py_INCREF(result);
6751
+ Py_INCREF_IMMORTAL(result);
6752
6752
  return result;
6753
6753
  }
6754
6754
  case Py_NE: {
6755
6755
  bool r = operand1 != operand2;
6756
6756
  PyObject *result = BOOL_FROM(r);
6757
- Py_INCREF(result);
6757
+ Py_INCREF_IMMORTAL(result);
6758
6758
  return result;
6759
6759
  }
6760
6760
  default:
@@ -6863,7 +6863,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6863
6863
  }
6864
6864
  }
6865
6865
 
6866
- Py_DECREF(result);
6866
+ Py_DECREF_IMMORTAL(result);
6867
6867
  }
6868
6868
 
6869
6869
  // No rich comparison worked, but maybe compare works.
@@ -6932,7 +6932,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6932
6932
  }
6933
6933
  }
6934
6934
 
6935
- Py_DECREF(result);
6935
+ Py_DECREF_IMMORTAL(result);
6936
6936
  }
6937
6937
  }
6938
6938
 
@@ -6954,7 +6954,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6954
6954
  }
6955
6955
  }
6956
6956
 
6957
- Py_DECREF(result);
6957
+ Py_DECREF_IMMORTAL(result);
6958
6958
  }
6959
6959
 
6960
6960
  f = (PYTHON_VERSION < 0x300 ? NULL : PyLong_Type.tp_richcompare);
@@ -6975,7 +6975,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6975
6975
  }
6976
6976
  }
6977
6977
 
6978
- Py_DECREF(result);
6978
+ Py_DECREF_IMMORTAL(result);
6979
6979
  }
6980
6980
 
6981
6981
  int c;
@@ -7091,7 +7091,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7091
7091
  }
7092
7092
  }
7093
7093
 
7094
- Py_DECREF(result);
7094
+ Py_DECREF_IMMORTAL(result);
7095
7095
  }
7096
7096
  }
7097
7097
 
@@ -7114,7 +7114,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7114
7114
  }
7115
7115
  }
7116
7116
 
7117
- Py_DECREF(result);
7117
+ Py_DECREF_IMMORTAL(result);
7118
7118
  }
7119
7119
 
7120
7120
  if (checked_reverse_op == false) {
@@ -7137,7 +7137,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7137
7137
  }
7138
7138
  }
7139
7139
 
7140
- Py_DECREF(result);
7140
+ Py_DECREF_IMMORTAL(result);
7141
7141
  }
7142
7142
  }
7143
7143
 
@@ -7213,7 +7213,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7213
7213
  }
7214
7214
  }
7215
7215
 
7216
- Py_DECREF(result);
7216
+ Py_DECREF_IMMORTAL(result);
7217
7217
  }
7218
7218
 
7219
7219
  // No rich comparison worked, but maybe compare works.
@@ -7282,7 +7282,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7282
7282
  }
7283
7283
  }
7284
7284
 
7285
- Py_DECREF(result);
7285
+ Py_DECREF_IMMORTAL(result);
7286
7286
  }
7287
7287
  }
7288
7288
 
@@ -7304,7 +7304,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7304
7304
  }
7305
7305
  }
7306
7306
 
7307
- Py_DECREF(result);
7307
+ Py_DECREF_IMMORTAL(result);
7308
7308
  }
7309
7309
 
7310
7310
  f = RICHCOMPARE(type2);
@@ -7325,7 +7325,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7325
7325
  }
7326
7326
  }
7327
7327
 
7328
- Py_DECREF(result);
7328
+ Py_DECREF_IMMORTAL(result);
7329
7329
  }
7330
7330
 
7331
7331
  int c;
@@ -7441,7 +7441,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7441
7441
  }
7442
7442
  }
7443
7443
 
7444
- Py_DECREF(result);
7444
+ Py_DECREF_IMMORTAL(result);
7445
7445
  }
7446
7446
  }
7447
7447
 
@@ -7464,7 +7464,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7464
7464
  }
7465
7465
  }
7466
7466
 
7467
- Py_DECREF(result);
7467
+ Py_DECREF_IMMORTAL(result);
7468
7468
  }
7469
7469
 
7470
7470
  if (checked_reverse_op == false) {
@@ -7487,7 +7487,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7487
7487
  }
7488
7488
  }
7489
7489
 
7490
- Py_DECREF(result);
7490
+ Py_DECREF_IMMORTAL(result);
7491
7491
  }
7492
7492
  }
7493
7493
 
@@ -7534,7 +7534,7 @@ static PyObject *COMPARE_LT_OBJECT_FLOAT_FLOAT(PyObject *operand1, PyObject *ope
7534
7534
 
7535
7535
  // Convert to target type.
7536
7536
  PyObject *result = BOOL_FROM(r);
7537
- Py_INCREF(result);
7537
+ Py_INCREF_IMMORTAL(result);
7538
7538
  return result;
7539
7539
  }
7540
7540
  /* Code referring to "OBJECT" corresponds to any Python object and "FLOAT" to Python 'float'. */
@@ -7571,7 +7571,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7571
7571
  return result;
7572
7572
  }
7573
7573
 
7574
- Py_DECREF(result);
7574
+ Py_DECREF_IMMORTAL(result);
7575
7575
  }
7576
7576
 
7577
7577
  // No rich comparison worked, but maybe compare works.
@@ -7612,7 +7612,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7612
7612
 
7613
7613
  bool r = c != 0;
7614
7614
  PyObject *result = BOOL_FROM(r);
7615
- Py_INCREF(result);
7615
+ Py_INCREF_IMMORTAL(result);
7616
7616
  return result;
7617
7617
  }
7618
7618
  }
@@ -7632,7 +7632,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7632
7632
  return result;
7633
7633
  }
7634
7634
 
7635
- Py_DECREF(result);
7635
+ Py_DECREF_IMMORTAL(result);
7636
7636
  }
7637
7637
  }
7638
7638
 
@@ -7646,7 +7646,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7646
7646
  return result;
7647
7647
  }
7648
7648
 
7649
- Py_DECREF(result);
7649
+ Py_DECREF_IMMORTAL(result);
7650
7650
  }
7651
7651
 
7652
7652
  f = PyFloat_Type.tp_richcompare;
@@ -7659,7 +7659,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7659
7659
  return result;
7660
7660
  }
7661
7661
 
7662
- Py_DECREF(result);
7662
+ Py_DECREF_IMMORTAL(result);
7663
7663
  }
7664
7664
 
7665
7665
  int c;
@@ -7747,7 +7747,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7747
7747
 
7748
7748
  bool r = c != 0;
7749
7749
  PyObject *result = BOOL_FROM(r);
7750
- Py_INCREF(result);
7750
+ Py_INCREF_IMMORTAL(result);
7751
7751
  return result;
7752
7752
  #else
7753
7753
  bool checked_reverse_op = false;
@@ -7767,7 +7767,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7767
7767
  return result;
7768
7768
  }
7769
7769
 
7770
- Py_DECREF(result);
7770
+ Py_DECREF_IMMORTAL(result);
7771
7771
  }
7772
7772
  }
7773
7773
 
@@ -7782,7 +7782,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7782
7782
  return result;
7783
7783
  }
7784
7784
 
7785
- Py_DECREF(result);
7785
+ Py_DECREF_IMMORTAL(result);
7786
7786
  }
7787
7787
 
7788
7788
  if (checked_reverse_op == false) {
@@ -7797,7 +7797,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7797
7797
  return result;
7798
7798
  }
7799
7799
 
7800
- Py_DECREF(result);
7800
+ Py_DECREF_IMMORTAL(result);
7801
7801
  }
7802
7802
  }
7803
7803
 
@@ -7809,13 +7809,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7809
7809
  case Py_EQ: {
7810
7810
  bool r = operand1 == operand2;
7811
7811
  PyObject *result = BOOL_FROM(r);
7812
- Py_INCREF(result);
7812
+ Py_INCREF_IMMORTAL(result);
7813
7813
  return result;
7814
7814
  }
7815
7815
  case Py_NE: {
7816
7816
  bool r = operand1 != operand2;
7817
7817
  PyObject *result = BOOL_FROM(r);
7818
- Py_INCREF(result);
7818
+ Py_INCREF_IMMORTAL(result);
7819
7819
  return result;
7820
7820
  }
7821
7821
  default:
@@ -7863,7 +7863,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7863
7863
  return result;
7864
7864
  }
7865
7865
 
7866
- Py_DECREF(result);
7866
+ Py_DECREF_IMMORTAL(result);
7867
7867
  }
7868
7868
 
7869
7869
  // No rich comparison worked, but maybe compare works.
@@ -7904,7 +7904,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7904
7904
 
7905
7905
  bool r = c != 0;
7906
7906
  PyObject *result = BOOL_FROM(r);
7907
- Py_INCREF(result);
7907
+ Py_INCREF_IMMORTAL(result);
7908
7908
  return result;
7909
7909
  }
7910
7910
  }
@@ -7924,7 +7924,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7924
7924
  return result;
7925
7925
  }
7926
7926
 
7927
- Py_DECREF(result);
7927
+ Py_DECREF_IMMORTAL(result);
7928
7928
  }
7929
7929
  }
7930
7930
 
@@ -7938,7 +7938,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7938
7938
  return result;
7939
7939
  }
7940
7940
 
7941
- Py_DECREF(result);
7941
+ Py_DECREF_IMMORTAL(result);
7942
7942
  }
7943
7943
 
7944
7944
  f = RICHCOMPARE(type2);
@@ -7951,7 +7951,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7951
7951
  return result;
7952
7952
  }
7953
7953
 
7954
- Py_DECREF(result);
7954
+ Py_DECREF_IMMORTAL(result);
7955
7955
  }
7956
7956
 
7957
7957
  int c;
@@ -8039,7 +8039,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8039
8039
 
8040
8040
  bool r = c != 0;
8041
8041
  PyObject *result = BOOL_FROM(r);
8042
- Py_INCREF(result);
8042
+ Py_INCREF_IMMORTAL(result);
8043
8043
  return result;
8044
8044
  #else
8045
8045
  bool checked_reverse_op = false;
@@ -8059,7 +8059,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8059
8059
  return result;
8060
8060
  }
8061
8061
 
8062
- Py_DECREF(result);
8062
+ Py_DECREF_IMMORTAL(result);
8063
8063
  }
8064
8064
  }
8065
8065
 
@@ -8074,7 +8074,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8074
8074
  return result;
8075
8075
  }
8076
8076
 
8077
- Py_DECREF(result);
8077
+ Py_DECREF_IMMORTAL(result);
8078
8078
  }
8079
8079
 
8080
8080
  if (checked_reverse_op == false) {
@@ -8089,7 +8089,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8089
8089
  return result;
8090
8090
  }
8091
8091
 
8092
- Py_DECREF(result);
8092
+ Py_DECREF_IMMORTAL(result);
8093
8093
  }
8094
8094
  }
8095
8095
 
@@ -8101,13 +8101,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8101
8101
  case Py_EQ: {
8102
8102
  bool r = operand1 == operand2;
8103
8103
  PyObject *result = BOOL_FROM(r);
8104
- Py_INCREF(result);
8104
+ Py_INCREF_IMMORTAL(result);
8105
8105
  return result;
8106
8106
  }
8107
8107
  case Py_NE: {
8108
8108
  bool r = operand1 != operand2;
8109
8109
  PyObject *result = BOOL_FROM(r);
8110
- Py_INCREF(result);
8110
+ Py_INCREF_IMMORTAL(result);
8111
8111
  return result;
8112
8112
  }
8113
8113
  default:
@@ -8191,7 +8191,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8191
8191
  }
8192
8192
  }
8193
8193
 
8194
- Py_DECREF(result);
8194
+ Py_DECREF_IMMORTAL(result);
8195
8195
  }
8196
8196
 
8197
8197
  // No rich comparison worked, but maybe compare works.
@@ -8260,7 +8260,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8260
8260
  }
8261
8261
  }
8262
8262
 
8263
- Py_DECREF(result);
8263
+ Py_DECREF_IMMORTAL(result);
8264
8264
  }
8265
8265
  }
8266
8266
 
@@ -8282,7 +8282,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8282
8282
  }
8283
8283
  }
8284
8284
 
8285
- Py_DECREF(result);
8285
+ Py_DECREF_IMMORTAL(result);
8286
8286
  }
8287
8287
 
8288
8288
  f = PyFloat_Type.tp_richcompare;
@@ -8303,7 +8303,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8303
8303
  }
8304
8304
  }
8305
8305
 
8306
- Py_DECREF(result);
8306
+ Py_DECREF_IMMORTAL(result);
8307
8307
  }
8308
8308
 
8309
8309
  int c;
@@ -8419,7 +8419,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8419
8419
  }
8420
8420
  }
8421
8421
 
8422
- Py_DECREF(result);
8422
+ Py_DECREF_IMMORTAL(result);
8423
8423
  }
8424
8424
  }
8425
8425
 
@@ -8442,7 +8442,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8442
8442
  }
8443
8443
  }
8444
8444
 
8445
- Py_DECREF(result);
8445
+ Py_DECREF_IMMORTAL(result);
8446
8446
  }
8447
8447
 
8448
8448
  if (checked_reverse_op == false) {
@@ -8465,7 +8465,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8465
8465
  }
8466
8466
  }
8467
8467
 
8468
- Py_DECREF(result);
8468
+ Py_DECREF_IMMORTAL(result);
8469
8469
  }
8470
8470
  }
8471
8471
 
@@ -8539,7 +8539,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8539
8539
  }
8540
8540
  }
8541
8541
 
8542
- Py_DECREF(result);
8542
+ Py_DECREF_IMMORTAL(result);
8543
8543
  }
8544
8544
 
8545
8545
  // No rich comparison worked, but maybe compare works.
@@ -8608,7 +8608,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8608
8608
  }
8609
8609
  }
8610
8610
 
8611
- Py_DECREF(result);
8611
+ Py_DECREF_IMMORTAL(result);
8612
8612
  }
8613
8613
  }
8614
8614
 
@@ -8630,7 +8630,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8630
8630
  }
8631
8631
  }
8632
8632
 
8633
- Py_DECREF(result);
8633
+ Py_DECREF_IMMORTAL(result);
8634
8634
  }
8635
8635
 
8636
8636
  f = RICHCOMPARE(type2);
@@ -8651,7 +8651,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8651
8651
  }
8652
8652
  }
8653
8653
 
8654
- Py_DECREF(result);
8654
+ Py_DECREF_IMMORTAL(result);
8655
8655
  }
8656
8656
 
8657
8657
  int c;
@@ -8767,7 +8767,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8767
8767
  }
8768
8768
  }
8769
8769
 
8770
- Py_DECREF(result);
8770
+ Py_DECREF_IMMORTAL(result);
8771
8771
  }
8772
8772
  }
8773
8773
 
@@ -8790,7 +8790,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8790
8790
  }
8791
8791
  }
8792
8792
 
8793
- Py_DECREF(result);
8793
+ Py_DECREF_IMMORTAL(result);
8794
8794
  }
8795
8795
 
8796
8796
  if (checked_reverse_op == false) {
@@ -8813,7 +8813,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8813
8813
  }
8814
8814
  }
8815
8815
 
8816
- Py_DECREF(result);
8816
+ Py_DECREF_IMMORTAL(result);
8817
8817
  }
8818
8818
  }
8819
8819
 
@@ -8886,7 +8886,7 @@ static PyObject *COMPARE_LT_OBJECT_TUPLE_TUPLE(PyObject *operand1, PyObject *ope
8886
8886
 
8887
8887
  // Convert to target type.
8888
8888
  PyObject *result = BOOL_FROM(r);
8889
- Py_INCREF(result);
8889
+ Py_INCREF_IMMORTAL(result);
8890
8890
  return result;
8891
8891
  }
8892
8892
 
@@ -8926,7 +8926,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
8926
8926
  return result;
8927
8927
  }
8928
8928
 
8929
- Py_DECREF(result);
8929
+ Py_DECREF_IMMORTAL(result);
8930
8930
  }
8931
8931
 
8932
8932
  // No rich comparison worked, but maybe compare works.
@@ -8967,7 +8967,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
8967
8967
 
8968
8968
  bool r = c != 0;
8969
8969
  PyObject *result = BOOL_FROM(r);
8970
- Py_INCREF(result);
8970
+ Py_INCREF_IMMORTAL(result);
8971
8971
  return result;
8972
8972
  }
8973
8973
  }
@@ -8987,7 +8987,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
8987
8987
  return result;
8988
8988
  }
8989
8989
 
8990
- Py_DECREF(result);
8990
+ Py_DECREF_IMMORTAL(result);
8991
8991
  }
8992
8992
  }
8993
8993
 
@@ -9001,7 +9001,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9001
9001
  return result;
9002
9002
  }
9003
9003
 
9004
- Py_DECREF(result);
9004
+ Py_DECREF_IMMORTAL(result);
9005
9005
  }
9006
9006
 
9007
9007
  f = PyTuple_Type.tp_richcompare;
@@ -9014,7 +9014,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9014
9014
  return result;
9015
9015
  }
9016
9016
 
9017
- Py_DECREF(result);
9017
+ Py_DECREF_IMMORTAL(result);
9018
9018
  }
9019
9019
 
9020
9020
  int c;
@@ -9102,7 +9102,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9102
9102
 
9103
9103
  bool r = c != 0;
9104
9104
  PyObject *result = BOOL_FROM(r);
9105
- Py_INCREF(result);
9105
+ Py_INCREF_IMMORTAL(result);
9106
9106
  return result;
9107
9107
  #else
9108
9108
  bool checked_reverse_op = false;
@@ -9122,7 +9122,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9122
9122
  return result;
9123
9123
  }
9124
9124
 
9125
- Py_DECREF(result);
9125
+ Py_DECREF_IMMORTAL(result);
9126
9126
  }
9127
9127
  }
9128
9128
 
@@ -9137,7 +9137,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9137
9137
  return result;
9138
9138
  }
9139
9139
 
9140
- Py_DECREF(result);
9140
+ Py_DECREF_IMMORTAL(result);
9141
9141
  }
9142
9142
 
9143
9143
  if (checked_reverse_op == false) {
@@ -9152,7 +9152,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9152
9152
  return result;
9153
9153
  }
9154
9154
 
9155
- Py_DECREF(result);
9155
+ Py_DECREF_IMMORTAL(result);
9156
9156
  }
9157
9157
  }
9158
9158
 
@@ -9164,13 +9164,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9164
9164
  case Py_EQ: {
9165
9165
  bool r = operand1 == operand2;
9166
9166
  PyObject *result = BOOL_FROM(r);
9167
- Py_INCREF(result);
9167
+ Py_INCREF_IMMORTAL(result);
9168
9168
  return result;
9169
9169
  }
9170
9170
  case Py_NE: {
9171
9171
  bool r = operand1 != operand2;
9172
9172
  PyObject *result = BOOL_FROM(r);
9173
- Py_INCREF(result);
9173
+ Py_INCREF_IMMORTAL(result);
9174
9174
  return result;
9175
9175
  }
9176
9176
  default:
@@ -9218,7 +9218,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9218
9218
  return result;
9219
9219
  }
9220
9220
 
9221
- Py_DECREF(result);
9221
+ Py_DECREF_IMMORTAL(result);
9222
9222
  }
9223
9223
 
9224
9224
  // No rich comparison worked, but maybe compare works.
@@ -9259,7 +9259,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9259
9259
 
9260
9260
  bool r = c != 0;
9261
9261
  PyObject *result = BOOL_FROM(r);
9262
- Py_INCREF(result);
9262
+ Py_INCREF_IMMORTAL(result);
9263
9263
  return result;
9264
9264
  }
9265
9265
  }
@@ -9279,7 +9279,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9279
9279
  return result;
9280
9280
  }
9281
9281
 
9282
- Py_DECREF(result);
9282
+ Py_DECREF_IMMORTAL(result);
9283
9283
  }
9284
9284
  }
9285
9285
 
@@ -9293,7 +9293,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9293
9293
  return result;
9294
9294
  }
9295
9295
 
9296
- Py_DECREF(result);
9296
+ Py_DECREF_IMMORTAL(result);
9297
9297
  }
9298
9298
 
9299
9299
  f = RICHCOMPARE(type2);
@@ -9306,7 +9306,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9306
9306
  return result;
9307
9307
  }
9308
9308
 
9309
- Py_DECREF(result);
9309
+ Py_DECREF_IMMORTAL(result);
9310
9310
  }
9311
9311
 
9312
9312
  int c;
@@ -9394,7 +9394,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9394
9394
 
9395
9395
  bool r = c != 0;
9396
9396
  PyObject *result = BOOL_FROM(r);
9397
- Py_INCREF(result);
9397
+ Py_INCREF_IMMORTAL(result);
9398
9398
  return result;
9399
9399
  #else
9400
9400
  bool checked_reverse_op = false;
@@ -9414,7 +9414,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9414
9414
  return result;
9415
9415
  }
9416
9416
 
9417
- Py_DECREF(result);
9417
+ Py_DECREF_IMMORTAL(result);
9418
9418
  }
9419
9419
  }
9420
9420
 
@@ -9429,7 +9429,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9429
9429
  return result;
9430
9430
  }
9431
9431
 
9432
- Py_DECREF(result);
9432
+ Py_DECREF_IMMORTAL(result);
9433
9433
  }
9434
9434
 
9435
9435
  if (checked_reverse_op == false) {
@@ -9444,7 +9444,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9444
9444
  return result;
9445
9445
  }
9446
9446
 
9447
- Py_DECREF(result);
9447
+ Py_DECREF_IMMORTAL(result);
9448
9448
  }
9449
9449
  }
9450
9450
 
@@ -9456,13 +9456,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9456
9456
  case Py_EQ: {
9457
9457
  bool r = operand1 == operand2;
9458
9458
  PyObject *result = BOOL_FROM(r);
9459
- Py_INCREF(result);
9459
+ Py_INCREF_IMMORTAL(result);
9460
9460
  return result;
9461
9461
  }
9462
9462
  case Py_NE: {
9463
9463
  bool r = operand1 != operand2;
9464
9464
  PyObject *result = BOOL_FROM(r);
9465
- Py_INCREF(result);
9465
+ Py_INCREF_IMMORTAL(result);
9466
9466
  return result;
9467
9467
  }
9468
9468
  default:
@@ -9571,7 +9571,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9571
9571
  }
9572
9572
  }
9573
9573
 
9574
- Py_DECREF(result);
9574
+ Py_DECREF_IMMORTAL(result);
9575
9575
  }
9576
9576
 
9577
9577
  // No rich comparison worked, but maybe compare works.
@@ -9640,7 +9640,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9640
9640
  }
9641
9641
  }
9642
9642
 
9643
- Py_DECREF(result);
9643
+ Py_DECREF_IMMORTAL(result);
9644
9644
  }
9645
9645
  }
9646
9646
 
@@ -9662,7 +9662,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9662
9662
  }
9663
9663
  }
9664
9664
 
9665
- Py_DECREF(result);
9665
+ Py_DECREF_IMMORTAL(result);
9666
9666
  }
9667
9667
 
9668
9668
  f = PyTuple_Type.tp_richcompare;
@@ -9683,7 +9683,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9683
9683
  }
9684
9684
  }
9685
9685
 
9686
- Py_DECREF(result);
9686
+ Py_DECREF_IMMORTAL(result);
9687
9687
  }
9688
9688
 
9689
9689
  int c;
@@ -9799,7 +9799,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9799
9799
  }
9800
9800
  }
9801
9801
 
9802
- Py_DECREF(result);
9802
+ Py_DECREF_IMMORTAL(result);
9803
9803
  }
9804
9804
  }
9805
9805
 
@@ -9822,7 +9822,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9822
9822
  }
9823
9823
  }
9824
9824
 
9825
- Py_DECREF(result);
9825
+ Py_DECREF_IMMORTAL(result);
9826
9826
  }
9827
9827
 
9828
9828
  if (checked_reverse_op == false) {
@@ -9845,7 +9845,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9845
9845
  }
9846
9846
  }
9847
9847
 
9848
- Py_DECREF(result);
9848
+ Py_DECREF_IMMORTAL(result);
9849
9849
  }
9850
9850
  }
9851
9851
 
@@ -9919,7 +9919,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
9919
9919
  }
9920
9920
  }
9921
9921
 
9922
- Py_DECREF(result);
9922
+ Py_DECREF_IMMORTAL(result);
9923
9923
  }
9924
9924
 
9925
9925
  // No rich comparison worked, but maybe compare works.
@@ -9988,7 +9988,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
9988
9988
  }
9989
9989
  }
9990
9990
 
9991
- Py_DECREF(result);
9991
+ Py_DECREF_IMMORTAL(result);
9992
9992
  }
9993
9993
  }
9994
9994
 
@@ -10010,7 +10010,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10010
10010
  }
10011
10011
  }
10012
10012
 
10013
- Py_DECREF(result);
10013
+ Py_DECREF_IMMORTAL(result);
10014
10014
  }
10015
10015
 
10016
10016
  f = RICHCOMPARE(type2);
@@ -10031,7 +10031,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10031
10031
  }
10032
10032
  }
10033
10033
 
10034
- Py_DECREF(result);
10034
+ Py_DECREF_IMMORTAL(result);
10035
10035
  }
10036
10036
 
10037
10037
  int c;
@@ -10147,7 +10147,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10147
10147
  }
10148
10148
  }
10149
10149
 
10150
- Py_DECREF(result);
10150
+ Py_DECREF_IMMORTAL(result);
10151
10151
  }
10152
10152
  }
10153
10153
 
@@ -10170,7 +10170,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10170
10170
  }
10171
10171
  }
10172
10172
 
10173
- Py_DECREF(result);
10173
+ Py_DECREF_IMMORTAL(result);
10174
10174
  }
10175
10175
 
10176
10176
  if (checked_reverse_op == false) {
@@ -10193,7 +10193,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10193
10193
  }
10194
10194
  }
10195
10195
 
10196
- Py_DECREF(result);
10196
+ Py_DECREF_IMMORTAL(result);
10197
10197
  }
10198
10198
  }
10199
10199
 
@@ -10273,7 +10273,7 @@ static PyObject *COMPARE_LT_OBJECT_LIST_LIST(PyObject *operand1, PyObject *opera
10273
10273
 
10274
10274
  // Convert to target type.
10275
10275
  PyObject *result = BOOL_FROM(r);
10276
- Py_INCREF(result);
10276
+ Py_INCREF_IMMORTAL(result);
10277
10277
  return result;
10278
10278
  }
10279
10279
 
@@ -10313,7 +10313,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10313
10313
  return result;
10314
10314
  }
10315
10315
 
10316
- Py_DECREF(result);
10316
+ Py_DECREF_IMMORTAL(result);
10317
10317
  }
10318
10318
 
10319
10319
  // No rich comparison worked, but maybe compare works.
@@ -10354,7 +10354,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10354
10354
 
10355
10355
  bool r = c != 0;
10356
10356
  PyObject *result = BOOL_FROM(r);
10357
- Py_INCREF(result);
10357
+ Py_INCREF_IMMORTAL(result);
10358
10358
  return result;
10359
10359
  }
10360
10360
  }
@@ -10374,7 +10374,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10374
10374
  return result;
10375
10375
  }
10376
10376
 
10377
- Py_DECREF(result);
10377
+ Py_DECREF_IMMORTAL(result);
10378
10378
  }
10379
10379
  }
10380
10380
 
@@ -10388,7 +10388,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10388
10388
  return result;
10389
10389
  }
10390
10390
 
10391
- Py_DECREF(result);
10391
+ Py_DECREF_IMMORTAL(result);
10392
10392
  }
10393
10393
 
10394
10394
  f = PyList_Type.tp_richcompare;
@@ -10401,7 +10401,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10401
10401
  return result;
10402
10402
  }
10403
10403
 
10404
- Py_DECREF(result);
10404
+ Py_DECREF_IMMORTAL(result);
10405
10405
  }
10406
10406
 
10407
10407
  int c;
@@ -10489,7 +10489,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10489
10489
 
10490
10490
  bool r = c != 0;
10491
10491
  PyObject *result = BOOL_FROM(r);
10492
- Py_INCREF(result);
10492
+ Py_INCREF_IMMORTAL(result);
10493
10493
  return result;
10494
10494
  #else
10495
10495
  bool checked_reverse_op = false;
@@ -10509,7 +10509,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10509
10509
  return result;
10510
10510
  }
10511
10511
 
10512
- Py_DECREF(result);
10512
+ Py_DECREF_IMMORTAL(result);
10513
10513
  }
10514
10514
  }
10515
10515
 
@@ -10524,7 +10524,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10524
10524
  return result;
10525
10525
  }
10526
10526
 
10527
- Py_DECREF(result);
10527
+ Py_DECREF_IMMORTAL(result);
10528
10528
  }
10529
10529
 
10530
10530
  if (checked_reverse_op == false) {
@@ -10539,7 +10539,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10539
10539
  return result;
10540
10540
  }
10541
10541
 
10542
- Py_DECREF(result);
10542
+ Py_DECREF_IMMORTAL(result);
10543
10543
  }
10544
10544
  }
10545
10545
 
@@ -10551,13 +10551,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10551
10551
  case Py_EQ: {
10552
10552
  bool r = operand1 == operand2;
10553
10553
  PyObject *result = BOOL_FROM(r);
10554
- Py_INCREF(result);
10554
+ Py_INCREF_IMMORTAL(result);
10555
10555
  return result;
10556
10556
  }
10557
10557
  case Py_NE: {
10558
10558
  bool r = operand1 != operand2;
10559
10559
  PyObject *result = BOOL_FROM(r);
10560
- Py_INCREF(result);
10560
+ Py_INCREF_IMMORTAL(result);
10561
10561
  return result;
10562
10562
  }
10563
10563
  default:
@@ -10605,7 +10605,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10605
10605
  return result;
10606
10606
  }
10607
10607
 
10608
- Py_DECREF(result);
10608
+ Py_DECREF_IMMORTAL(result);
10609
10609
  }
10610
10610
 
10611
10611
  // No rich comparison worked, but maybe compare works.
@@ -10646,7 +10646,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10646
10646
 
10647
10647
  bool r = c != 0;
10648
10648
  PyObject *result = BOOL_FROM(r);
10649
- Py_INCREF(result);
10649
+ Py_INCREF_IMMORTAL(result);
10650
10650
  return result;
10651
10651
  }
10652
10652
  }
@@ -10666,7 +10666,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10666
10666
  return result;
10667
10667
  }
10668
10668
 
10669
- Py_DECREF(result);
10669
+ Py_DECREF_IMMORTAL(result);
10670
10670
  }
10671
10671
  }
10672
10672
 
@@ -10680,7 +10680,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10680
10680
  return result;
10681
10681
  }
10682
10682
 
10683
- Py_DECREF(result);
10683
+ Py_DECREF_IMMORTAL(result);
10684
10684
  }
10685
10685
 
10686
10686
  f = RICHCOMPARE(type2);
@@ -10693,7 +10693,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10693
10693
  return result;
10694
10694
  }
10695
10695
 
10696
- Py_DECREF(result);
10696
+ Py_DECREF_IMMORTAL(result);
10697
10697
  }
10698
10698
 
10699
10699
  int c;
@@ -10781,7 +10781,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10781
10781
 
10782
10782
  bool r = c != 0;
10783
10783
  PyObject *result = BOOL_FROM(r);
10784
- Py_INCREF(result);
10784
+ Py_INCREF_IMMORTAL(result);
10785
10785
  return result;
10786
10786
  #else
10787
10787
  bool checked_reverse_op = false;
@@ -10801,7 +10801,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10801
10801
  return result;
10802
10802
  }
10803
10803
 
10804
- Py_DECREF(result);
10804
+ Py_DECREF_IMMORTAL(result);
10805
10805
  }
10806
10806
  }
10807
10807
 
@@ -10816,7 +10816,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10816
10816
  return result;
10817
10817
  }
10818
10818
 
10819
- Py_DECREF(result);
10819
+ Py_DECREF_IMMORTAL(result);
10820
10820
  }
10821
10821
 
10822
10822
  if (checked_reverse_op == false) {
@@ -10831,7 +10831,7 @@ PyObject *RICH_COMPARE_LT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10831
10831
  return result;
10832
10832
  }
10833
10833
 
10834
- Py_DECREF(result);
10834
+ Py_DECREF_IMMORTAL(result);
10835
10835
  }
10836
10836
  }
10837
10837
 
@@ -10843,13 +10843,13 @@ PyObject *RICH_COMPARE_LT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10843
10843
  case Py_EQ: {
10844
10844
  bool r = operand1 == operand2;
10845
10845
  PyObject *result = BOOL_FROM(r);
10846
- Py_INCREF(result);
10846
+ Py_INCREF_IMMORTAL(result);
10847
10847
  return result;
10848
10848
  }
10849
10849
  case Py_NE: {
10850
10850
  bool r = operand1 != operand2;
10851
10851
  PyObject *result = BOOL_FROM(r);
10852
- Py_INCREF(result);
10852
+ Py_INCREF_IMMORTAL(result);
10853
10853
  return result;
10854
10854
  }
10855
10855
  default:
@@ -10959,7 +10959,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
10959
10959
  }
10960
10960
  }
10961
10961
 
10962
- Py_DECREF(result);
10962
+ Py_DECREF_IMMORTAL(result);
10963
10963
  }
10964
10964
 
10965
10965
  // No rich comparison worked, but maybe compare works.
@@ -11028,7 +11028,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11028
11028
  }
11029
11029
  }
11030
11030
 
11031
- Py_DECREF(result);
11031
+ Py_DECREF_IMMORTAL(result);
11032
11032
  }
11033
11033
  }
11034
11034
 
@@ -11050,7 +11050,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11050
11050
  }
11051
11051
  }
11052
11052
 
11053
- Py_DECREF(result);
11053
+ Py_DECREF_IMMORTAL(result);
11054
11054
  }
11055
11055
 
11056
11056
  f = PyList_Type.tp_richcompare;
@@ -11071,7 +11071,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11071
11071
  }
11072
11072
  }
11073
11073
 
11074
- Py_DECREF(result);
11074
+ Py_DECREF_IMMORTAL(result);
11075
11075
  }
11076
11076
 
11077
11077
  int c;
@@ -11187,7 +11187,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11187
11187
  }
11188
11188
  }
11189
11189
 
11190
- Py_DECREF(result);
11190
+ Py_DECREF_IMMORTAL(result);
11191
11191
  }
11192
11192
  }
11193
11193
 
@@ -11210,7 +11210,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11210
11210
  }
11211
11211
  }
11212
11212
 
11213
- Py_DECREF(result);
11213
+ Py_DECREF_IMMORTAL(result);
11214
11214
  }
11215
11215
 
11216
11216
  if (checked_reverse_op == false) {
@@ -11233,7 +11233,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11233
11233
  }
11234
11234
  }
11235
11235
 
11236
- Py_DECREF(result);
11236
+ Py_DECREF_IMMORTAL(result);
11237
11237
  }
11238
11238
  }
11239
11239
 
@@ -11307,7 +11307,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11307
11307
  }
11308
11308
  }
11309
11309
 
11310
- Py_DECREF(result);
11310
+ Py_DECREF_IMMORTAL(result);
11311
11311
  }
11312
11312
 
11313
11313
  // No rich comparison worked, but maybe compare works.
@@ -11376,7 +11376,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11376
11376
  }
11377
11377
  }
11378
11378
 
11379
- Py_DECREF(result);
11379
+ Py_DECREF_IMMORTAL(result);
11380
11380
  }
11381
11381
  }
11382
11382
 
@@ -11398,7 +11398,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11398
11398
  }
11399
11399
  }
11400
11400
 
11401
- Py_DECREF(result);
11401
+ Py_DECREF_IMMORTAL(result);
11402
11402
  }
11403
11403
 
11404
11404
  f = RICHCOMPARE(type2);
@@ -11419,7 +11419,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11419
11419
  }
11420
11420
  }
11421
11421
 
11422
- Py_DECREF(result);
11422
+ Py_DECREF_IMMORTAL(result);
11423
11423
  }
11424
11424
 
11425
11425
  int c;
@@ -11535,7 +11535,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11535
11535
  }
11536
11536
  }
11537
11537
 
11538
- Py_DECREF(result);
11538
+ Py_DECREF_IMMORTAL(result);
11539
11539
  }
11540
11540
  }
11541
11541
 
@@ -11558,7 +11558,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11558
11558
  }
11559
11559
  }
11560
11560
 
11561
- Py_DECREF(result);
11561
+ Py_DECREF_IMMORTAL(result);
11562
11562
  }
11563
11563
 
11564
11564
  if (checked_reverse_op == false) {
@@ -11581,7 +11581,7 @@ nuitka_bool RICH_COMPARE_LT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11581
11581
  }
11582
11582
  }
11583
11583
 
11584
- Py_DECREF(result);
11584
+ Py_DECREF_IMMORTAL(result);
11585
11585
  }
11586
11586
  }
11587
11587
 
@@ -11673,7 +11673,7 @@ static PyObject *COMPARE_LT_OBJECT_LONG_CLONG(PyObject *operand1, long operand2)
11673
11673
 
11674
11674
  // Convert to target type.
11675
11675
  PyObject *result = BOOL_FROM(r);
11676
- Py_INCREF(result);
11676
+ Py_INCREF_IMMORTAL(result);
11677
11677
  return result;
11678
11678
  }
11679
11679
  /* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "INT" to Python2 'int'. */
@@ -11759,7 +11759,7 @@ static PyObject *COMPARE_LT_OBJECT_INT_CLONG(PyObject *operand1, long operand2)
11759
11759
 
11760
11760
  // Convert to target type.
11761
11761
  PyObject *result = BOOL_FROM(r);
11762
- Py_INCREF(result);
11762
+ Py_INCREF_IMMORTAL(result);
11763
11763
  return result;
11764
11764
  }
11765
11765
  /* Code referring to "INT" corresponds to Python2 'int' and "CLONG" to C platform long value. */
@@ -11821,7 +11821,7 @@ static PyObject *COMPARE_LT_OBJECT_LONG_DIGIT(PyObject *operand1, long operand2)
11821
11821
 
11822
11822
  // Convert to target type.
11823
11823
  PyObject *result = BOOL_FROM(r);
11824
- Py_INCREF(result);
11824
+ Py_INCREF_IMMORTAL(result);
11825
11825
  return result;
11826
11826
  }
11827
11827
  /* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "DIGIT" to C platform digit value for long
@@ -11882,7 +11882,7 @@ static PyObject *COMPARE_LT_OBJECT_FLOAT_CFLOAT(PyObject *operand1, double opera
11882
11882
 
11883
11883
  // Convert to target type.
11884
11884
  PyObject *result = BOOL_FROM(r);
11885
- Py_INCREF(result);
11885
+ Py_INCREF_IMMORTAL(result);
11886
11886
  return result;
11887
11887
  }
11888
11888
  /* Code referring to "FLOAT" corresponds to Python 'float' and "CFLOAT" to C platform float value. */