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

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

Potentially problematic release.


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

Files changed (201) hide show
  1. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/METADATA +2 -1
  2. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/RECORD +201 -200
  3. nuitka/Bytecodes.py +4 -2
  4. nuitka/HardImportRegistry.py +1 -0
  5. nuitka/MainControl.py +16 -10
  6. nuitka/ModuleRegistry.py +15 -0
  7. nuitka/OptionParsing.py +30 -8
  8. nuitka/Options.py +106 -45
  9. nuitka/PostProcessing.py +9 -8
  10. nuitka/PythonVersions.py +2 -1
  11. nuitka/Serialization.py +47 -30
  12. nuitka/Version.py +1 -1
  13. nuitka/build/Backend.scons +46 -19
  14. nuitka/build/CCompilerVersion.scons +3 -3
  15. nuitka/build/Onefile.scons +4 -4
  16. nuitka/build/SconsCaching.py +3 -2
  17. nuitka/build/SconsCompilerSettings.py +18 -6
  18. nuitka/build/SconsInterface.py +28 -8
  19. nuitka/build/SconsUtils.py +9 -1
  20. nuitka/build/include/nuitka/allocator.h +58 -2
  21. nuitka/build/include/nuitka/compiled_frame.h +48 -13
  22. nuitka/build/include/nuitka/compiled_function.h +4 -0
  23. nuitka/build/include/nuitka/constants.h +6 -0
  24. nuitka/build/include/nuitka/exception_groups.h +6 -6
  25. nuitka/build/include/nuitka/exceptions.h +3 -3
  26. nuitka/build/include/nuitka/freelists.h +11 -0
  27. nuitka/build/include/nuitka/helper/dictionaries.h +5 -4
  28. nuitka/build/include/nuitka/helper/lists.h +5 -5
  29. nuitka/build/include/nuitka/helper/lists_generated.h +12 -12
  30. nuitka/build/include/nuitka/helper/sequences.h +6 -0
  31. nuitka/build/include/nuitka/helper/slices.h +14 -8
  32. nuitka/build/include/nuitka/helper/subscripts.h +1 -184
  33. nuitka/build/include/nuitka/helper/tuples.h +42 -33
  34. nuitka/build/include/nuitka/importing.h +5 -0
  35. nuitka/build/include/nuitka/prelude.h +49 -5
  36. nuitka/build/include/nuitka/safe_string_ops.h +1 -0
  37. nuitka/build/include/nuitka/threading.h +13 -10
  38. nuitka/build/static_src/CompiledAsyncgenType.c +19 -8
  39. nuitka/build/static_src/CompiledCellType.c +1 -1
  40. nuitka/build/static_src/CompiledCodeHelpers.c +18 -16
  41. nuitka/build/static_src/CompiledCoroutineType.c +23 -19
  42. nuitka/build/static_src/CompiledFrameType.c +46 -34
  43. nuitka/build/static_src/CompiledFunctionType.c +55 -34
  44. nuitka/build/static_src/CompiledGeneratorType.c +21 -19
  45. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +127 -130
  46. nuitka/build/static_src/CompiledMethodType.c +15 -17
  47. nuitka/build/static_src/HelpersAllocator.c +71 -0
  48. nuitka/build/static_src/HelpersAttributes.c +1 -1
  49. nuitka/build/static_src/HelpersBuiltin.c +5 -5
  50. nuitka/build/static_src/HelpersBytes.c +2 -2
  51. nuitka/build/static_src/HelpersCalling.c +3 -0
  52. nuitka/build/static_src/HelpersCallingGenerated.c +952 -133
  53. nuitka/build/static_src/HelpersComparisonEq.c +329 -329
  54. nuitka/build/static_src/HelpersComparisonEqUtils.c +3 -1
  55. nuitka/build/static_src/HelpersComparisonGe.c +322 -322
  56. nuitka/build/static_src/HelpersComparisonGt.c +321 -321
  57. nuitka/build/static_src/HelpersComparisonLe.c +322 -322
  58. nuitka/build/static_src/HelpersComparisonLt.c +321 -321
  59. nuitka/build/static_src/HelpersComparisonNe.c +329 -329
  60. nuitka/build/static_src/HelpersConsole.c +96 -0
  61. nuitka/build/static_src/HelpersConstantsBlob.c +10 -6
  62. nuitka/build/static_src/HelpersDeepcopy.c +10 -8
  63. nuitka/build/static_src/HelpersDictionaries.c +17 -11
  64. nuitka/build/static_src/HelpersDictionariesGenerated.c +65 -29
  65. nuitka/build/static_src/HelpersExceptions.c +107 -9
  66. nuitka/build/static_src/HelpersFilesystemPaths.c +64 -4
  67. nuitka/build/static_src/HelpersFloats.c +20 -14
  68. nuitka/build/static_src/HelpersImport.c +1 -1
  69. nuitka/build/static_src/HelpersJitSources.c +1 -1
  70. nuitka/build/static_src/HelpersLists.c +29 -19
  71. nuitka/build/static_src/HelpersListsGenerated.c +24 -24
  72. nuitka/build/static_src/HelpersMatching.c +32 -5
  73. nuitka/build/static_src/HelpersOperationBinaryAdd.c +90 -63
  74. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +4 -4
  75. nuitka/build/static_src/HelpersOperationBinaryBitand.c +33 -33
  76. nuitka/build/static_src/HelpersOperationBinaryBitor.c +33 -33
  77. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +33 -33
  78. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +24 -24
  79. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +24 -24
  80. nuitka/build/static_src/HelpersOperationBinaryLshift.c +30 -30
  81. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +7 -7
  82. nuitka/build/static_src/HelpersOperationBinaryMod.c +90 -90
  83. nuitka/build/static_src/HelpersOperationBinaryMult.c +64 -58
  84. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +24 -24
  85. nuitka/build/static_src/HelpersOperationBinaryPow.c +27 -27
  86. nuitka/build/static_src/HelpersOperationBinaryRshift.c +30 -30
  87. nuitka/build/static_src/HelpersOperationBinarySub.c +24 -24
  88. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +24 -24
  89. nuitka/build/static_src/HelpersOperationInplaceAdd.c +67 -49
  90. nuitka/build/static_src/HelpersOperationInplaceBitand.c +25 -25
  91. nuitka/build/static_src/HelpersOperationInplaceBitor.c +25 -25
  92. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +25 -25
  93. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +28 -28
  94. nuitka/build/static_src/HelpersOperationInplaceLshift.c +18 -18
  95. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +10 -10
  96. nuitka/build/static_src/HelpersOperationInplaceMod.c +70 -70
  97. nuitka/build/static_src/HelpersOperationInplaceMult.c +33 -33
  98. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +28 -28
  99. nuitka/build/static_src/HelpersOperationInplacePow.c +28 -28
  100. nuitka/build/static_src/HelpersOperationInplaceRshift.c +18 -18
  101. nuitka/build/static_src/HelpersOperationInplaceSub.c +28 -28
  102. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +28 -28
  103. nuitka/build/static_src/HelpersRaising.c +10 -3
  104. nuitka/build/static_src/HelpersSafeStrings.c +14 -4
  105. nuitka/build/static_src/HelpersSlices.c +12 -5
  106. nuitka/build/static_src/HelpersStrings.c +1 -1
  107. nuitka/build/static_src/HelpersTuples.c +20 -15
  108. nuitka/build/static_src/InspectPatcher.c +74 -6
  109. nuitka/build/static_src/MainProgram.c +90 -25
  110. nuitka/build/static_src/MetaPathBasedLoader.c +81 -45
  111. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +2 -2
  112. nuitka/build/static_src/OnefileBootstrap.c +16 -17
  113. nuitka/code_generation/CodeGeneration.py +5 -2
  114. nuitka/code_generation/ConstantCodes.py +2 -2
  115. nuitka/code_generation/DictCodes.py +2 -2
  116. nuitka/code_generation/GlobalConstants.py +5 -0
  117. nuitka/code_generation/GlobalsLocalsCodes.py +2 -2
  118. nuitka/code_generation/ListCodes.py +2 -2
  119. nuitka/code_generation/LocalsDictCodes.py +1 -1
  120. nuitka/code_generation/ModuleCodes.py +19 -0
  121. nuitka/code_generation/PackageResourceCodes.py +14 -0
  122. nuitka/code_generation/SliceCodes.py +3 -3
  123. nuitka/code_generation/SubscriptCodes.py +5 -13
  124. nuitka/code_generation/TupleCodes.py +1 -1
  125. nuitka/code_generation/c_types/CTypePyObjectPointers.py +7 -7
  126. nuitka/code_generation/templates/CodeTemplatesConstants.py +7 -5
  127. nuitka/code_generation/templates/CodeTemplatesLoader.py +2 -0
  128. nuitka/code_generation/templates/CodeTemplatesModules.py +80 -54
  129. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +1 -1
  130. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +59 -8
  131. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +5 -5
  132. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +2 -2
  133. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +2 -2
  134. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +57 -21
  135. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +1 -1
  136. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +5 -5
  137. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +18 -18
  138. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +11 -11
  139. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +3 -3
  140. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +3 -3
  141. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +7 -7
  142. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +3 -3
  143. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +11 -11
  144. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +7 -7
  145. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +10 -10
  146. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +1 -1
  147. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +3 -3
  148. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +4 -1
  149. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +4 -1
  150. nuitka/finalizations/FinalizeMarkups.py +0 -18
  151. nuitka/freezer/DependsExe.py +9 -4
  152. nuitka/freezer/DllDependenciesMacOS.py +1 -1
  153. nuitka/freezer/DllDependenciesWin32.py +1 -1
  154. nuitka/freezer/ImportDetection.py +1 -0
  155. nuitka/freezer/IncludedDataFiles.py +13 -4
  156. nuitka/freezer/IncludedEntryPoints.py +16 -0
  157. nuitka/freezer/Onefile.py +0 -1
  158. nuitka/freezer/Standalone.py +38 -21
  159. nuitka/importing/ImportCache.py +3 -2
  160. nuitka/importing/Importing.py +16 -3
  161. nuitka/importing/StandardLibrary.py +4 -0
  162. nuitka/nodes/ChildrenHavingMixins.py +2 -0
  163. nuitka/nodes/ExpressionBasesGenerated.py +4 -0
  164. nuitka/nodes/HardImportNodesGenerated.py +83 -0
  165. nuitka/nodes/ModuleNodes.py +10 -2
  166. nuitka/nodes/OsSysNodes.py +16 -0
  167. nuitka/nodes/SubscriptNodes.py +3 -3
  168. nuitka/plugins/PluginBase.py +2 -0
  169. nuitka/plugins/standard/DataFilesPlugin.py +22 -1
  170. nuitka/plugins/standard/DillPlugin/DillPlugin.c +3 -3
  171. nuitka/plugins/standard/ImplicitImports.py +3 -0
  172. nuitka/plugins/standard/OptionsNannyPlugin.py +9 -41
  173. nuitka/plugins/standard/PkgResourcesPlugin.py +8 -2
  174. nuitka/plugins/standard/PySidePyQtPlugin.py +3 -0
  175. nuitka/plugins/standard/standard.nuitka-package.config.yml +28 -13
  176. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +2 -2
  177. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +7 -2
  178. nuitka/specs/HardImportSpecs.py +3 -0
  179. nuitka/specs/ParameterSpecs.py +26 -15
  180. nuitka/tools/general/find_module/FindModuleCode.py +3 -2
  181. nuitka/tools/specialize/CTypeDescriptions.py +11 -9
  182. nuitka/tools/testing/Common.py +12 -5
  183. nuitka/tools/testing/SearchModes.py +5 -1
  184. nuitka/tools/testing/run_nuitka_tests/__main__.py +37 -0
  185. nuitka/tools/watch/GitHub.py +1 -7
  186. nuitka/tree/Building.py +9 -6
  187. nuitka/tree/ReformulationMatchStatements.py +51 -14
  188. nuitka/tree/TreeHelpers.py +8 -0
  189. nuitka/utils/CStrings.py +7 -0
  190. nuitka/utils/Execution.py +10 -1
  191. nuitka/utils/FileOperations.py +21 -13
  192. nuitka/utils/Importing.py +24 -0
  193. nuitka/utils/ReExecute.py +12 -3
  194. nuitka/utils/SharedLibraries.py +26 -1
  195. nuitka/utils/Yaml.py +9 -1
  196. {Nuitka_winsvc-2.2.3.data → Nuitka_winsvc-2.3.2.data}/scripts/nuitka-run.bat +0 -0
  197. {Nuitka_winsvc-2.2.3.data → Nuitka_winsvc-2.3.2.data}/scripts/nuitka.bat +0 -0
  198. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/LICENSE.txt +0 -0
  199. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/WHEEL +0 -0
  200. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/entry_points.txt +0 -0
  201. {Nuitka_winsvc-2.2.3.dist-info → Nuitka_winsvc-2.3.2.dist-info}/top_level.txt +0 -0
@@ -23,7 +23,7 @@ static PyObject *COMPARE_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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_GT_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:
@@ -1416,7 +1416,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1416
1416
  }
1417
1417
  }
1418
1418
 
1419
- Py_DECREF(result);
1419
+ Py_DECREF_IMMORTAL(result);
1420
1420
  }
1421
1421
 
1422
1422
  // No rich comparison worked, but maybe compare works.
@@ -1485,7 +1485,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1485
1485
  }
1486
1486
  }
1487
1487
 
1488
- Py_DECREF(result);
1488
+ Py_DECREF_IMMORTAL(result);
1489
1489
  }
1490
1490
  }
1491
1491
 
@@ -1507,7 +1507,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1507
1507
  }
1508
1508
  }
1509
1509
 
1510
- Py_DECREF(result);
1510
+ Py_DECREF_IMMORTAL(result);
1511
1511
  }
1512
1512
 
1513
1513
  f = PyString_Type.tp_richcompare;
@@ -1528,7 +1528,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1528
1528
  }
1529
1529
  }
1530
1530
 
1531
- Py_DECREF(result);
1531
+ Py_DECREF_IMMORTAL(result);
1532
1532
  }
1533
1533
 
1534
1534
  int c;
@@ -1644,7 +1644,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1644
1644
  }
1645
1645
  }
1646
1646
 
1647
- Py_DECREF(result);
1647
+ Py_DECREF_IMMORTAL(result);
1648
1648
  }
1649
1649
  }
1650
1650
 
@@ -1667,7 +1667,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1667
1667
  }
1668
1668
  }
1669
1669
 
1670
- Py_DECREF(result);
1670
+ Py_DECREF_IMMORTAL(result);
1671
1671
  }
1672
1672
 
1673
1673
  if (checked_reverse_op == false) {
@@ -1690,7 +1690,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_STR(PyObject *operand1, PyObject *opera
1690
1690
  }
1691
1691
  }
1692
1692
 
1693
- Py_DECREF(result);
1693
+ Py_DECREF_IMMORTAL(result);
1694
1694
  }
1695
1695
  }
1696
1696
 
@@ -1766,7 +1766,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1766
1766
  }
1767
1767
  }
1768
1768
 
1769
- Py_DECREF(result);
1769
+ Py_DECREF_IMMORTAL(result);
1770
1770
  }
1771
1771
 
1772
1772
  // No rich comparison worked, but maybe compare works.
@@ -1835,7 +1835,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1835
1835
  }
1836
1836
  }
1837
1837
 
1838
- Py_DECREF(result);
1838
+ Py_DECREF_IMMORTAL(result);
1839
1839
  }
1840
1840
  }
1841
1841
 
@@ -1857,7 +1857,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1857
1857
  }
1858
1858
  }
1859
1859
 
1860
- Py_DECREF(result);
1860
+ Py_DECREF_IMMORTAL(result);
1861
1861
  }
1862
1862
 
1863
1863
  f = RICHCOMPARE(type2);
@@ -1878,7 +1878,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1878
1878
  }
1879
1879
  }
1880
1880
 
1881
- Py_DECREF(result);
1881
+ Py_DECREF_IMMORTAL(result);
1882
1882
  }
1883
1883
 
1884
1884
  int c;
@@ -1994,7 +1994,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
1994
1994
  }
1995
1995
  }
1996
1996
 
1997
- Py_DECREF(result);
1997
+ Py_DECREF_IMMORTAL(result);
1998
1998
  }
1999
1999
  }
2000
2000
 
@@ -2017,7 +2017,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
2017
2017
  }
2018
2018
  }
2019
2019
 
2020
- Py_DECREF(result);
2020
+ Py_DECREF_IMMORTAL(result);
2021
2021
  }
2022
2022
 
2023
2023
  if (checked_reverse_op == false) {
@@ -2040,7 +2040,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_STR_OBJECT(PyObject *operand1, PyObject *opera
2040
2040
  }
2041
2041
  }
2042
2042
 
2043
- Py_DECREF(result);
2043
+ Py_DECREF_IMMORTAL(result);
2044
2044
  }
2045
2045
  }
2046
2046
 
@@ -2088,7 +2088,7 @@ static PyObject *COMPARE_GT_OBJECT_UNICODE_UNICODE(PyObject *operand1, PyObject
2088
2088
 
2089
2089
  // Convert to target type.
2090
2090
  PyObject *result = BOOL_FROM(r);
2091
- Py_INCREF(result);
2091
+ Py_INCREF_IMMORTAL(result);
2092
2092
  return result;
2093
2093
  }
2094
2094
 
@@ -2131,7 +2131,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2131
2131
  return result;
2132
2132
  }
2133
2133
 
2134
- Py_DECREF(result);
2134
+ Py_DECREF_IMMORTAL(result);
2135
2135
  }
2136
2136
 
2137
2137
  // No rich comparison worked, but maybe compare works.
@@ -2172,7 +2172,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2172
2172
 
2173
2173
  bool r = c != 0;
2174
2174
  PyObject *result = BOOL_FROM(r);
2175
- Py_INCREF(result);
2175
+ Py_INCREF_IMMORTAL(result);
2176
2176
  return result;
2177
2177
  }
2178
2178
  }
@@ -2192,7 +2192,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2192
2192
  return result;
2193
2193
  }
2194
2194
 
2195
- Py_DECREF(result);
2195
+ Py_DECREF_IMMORTAL(result);
2196
2196
  }
2197
2197
  }
2198
2198
 
@@ -2206,7 +2206,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2206
2206
  return result;
2207
2207
  }
2208
2208
 
2209
- Py_DECREF(result);
2209
+ Py_DECREF_IMMORTAL(result);
2210
2210
  }
2211
2211
 
2212
2212
  f = PyUnicode_Type.tp_richcompare;
@@ -2219,7 +2219,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2219
2219
  return result;
2220
2220
  }
2221
2221
 
2222
- Py_DECREF(result);
2222
+ Py_DECREF_IMMORTAL(result);
2223
2223
  }
2224
2224
 
2225
2225
  int c;
@@ -2307,7 +2307,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2307
2307
 
2308
2308
  bool r = c != 0;
2309
2309
  PyObject *result = BOOL_FROM(r);
2310
- Py_INCREF(result);
2310
+ Py_INCREF_IMMORTAL(result);
2311
2311
  return result;
2312
2312
  #else
2313
2313
  bool checked_reverse_op = false;
@@ -2327,7 +2327,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2327
2327
  return result;
2328
2328
  }
2329
2329
 
2330
- Py_DECREF(result);
2330
+ Py_DECREF_IMMORTAL(result);
2331
2331
  }
2332
2332
  }
2333
2333
 
@@ -2342,7 +2342,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2342
2342
  return result;
2343
2343
  }
2344
2344
 
2345
- Py_DECREF(result);
2345
+ Py_DECREF_IMMORTAL(result);
2346
2346
  }
2347
2347
 
2348
2348
  if (checked_reverse_op == false) {
@@ -2357,7 +2357,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2357
2357
  return result;
2358
2358
  }
2359
2359
 
2360
- Py_DECREF(result);
2360
+ Py_DECREF_IMMORTAL(result);
2361
2361
  }
2362
2362
  }
2363
2363
 
@@ -2369,13 +2369,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_UNICODE(PyObject *operand1, PyObject *op
2369
2369
  case Py_EQ: {
2370
2370
  bool r = operand1 == operand2;
2371
2371
  PyObject *result = BOOL_FROM(r);
2372
- Py_INCREF(result);
2372
+ Py_INCREF_IMMORTAL(result);
2373
2373
  return result;
2374
2374
  }
2375
2375
  case Py_NE: {
2376
2376
  bool r = operand1 != operand2;
2377
2377
  PyObject *result = BOOL_FROM(r);
2378
- Py_INCREF(result);
2378
+ Py_INCREF_IMMORTAL(result);
2379
2379
  return result;
2380
2380
  }
2381
2381
  default:
@@ -2425,7 +2425,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2425
2425
  return result;
2426
2426
  }
2427
2427
 
2428
- Py_DECREF(result);
2428
+ Py_DECREF_IMMORTAL(result);
2429
2429
  }
2430
2430
 
2431
2431
  // No rich comparison worked, but maybe compare works.
@@ -2466,7 +2466,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2466
2466
 
2467
2467
  bool r = c != 0;
2468
2468
  PyObject *result = BOOL_FROM(r);
2469
- Py_INCREF(result);
2469
+ Py_INCREF_IMMORTAL(result);
2470
2470
  return result;
2471
2471
  }
2472
2472
  }
@@ -2486,7 +2486,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2486
2486
  return result;
2487
2487
  }
2488
2488
 
2489
- Py_DECREF(result);
2489
+ Py_DECREF_IMMORTAL(result);
2490
2490
  }
2491
2491
  }
2492
2492
 
@@ -2500,7 +2500,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2500
2500
  return result;
2501
2501
  }
2502
2502
 
2503
- Py_DECREF(result);
2503
+ Py_DECREF_IMMORTAL(result);
2504
2504
  }
2505
2505
 
2506
2506
  f = RICHCOMPARE(type2);
@@ -2513,7 +2513,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2513
2513
  return result;
2514
2514
  }
2515
2515
 
2516
- Py_DECREF(result);
2516
+ Py_DECREF_IMMORTAL(result);
2517
2517
  }
2518
2518
 
2519
2519
  int c;
@@ -2601,7 +2601,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2601
2601
 
2602
2602
  bool r = c != 0;
2603
2603
  PyObject *result = BOOL_FROM(r);
2604
- Py_INCREF(result);
2604
+ Py_INCREF_IMMORTAL(result);
2605
2605
  return result;
2606
2606
  #else
2607
2607
  bool checked_reverse_op = false;
@@ -2621,7 +2621,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2621
2621
  return result;
2622
2622
  }
2623
2623
 
2624
- Py_DECREF(result);
2624
+ Py_DECREF_IMMORTAL(result);
2625
2625
  }
2626
2626
  }
2627
2627
 
@@ -2636,7 +2636,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2636
2636
  return result;
2637
2637
  }
2638
2638
 
2639
- Py_DECREF(result);
2639
+ Py_DECREF_IMMORTAL(result);
2640
2640
  }
2641
2641
 
2642
2642
  if (checked_reverse_op == false) {
@@ -2651,7 +2651,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2651
2651
  return result;
2652
2652
  }
2653
2653
 
2654
- Py_DECREF(result);
2654
+ Py_DECREF_IMMORTAL(result);
2655
2655
  }
2656
2656
  }
2657
2657
 
@@ -2663,13 +2663,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_UNICODE_OBJECT(PyObject *operand1, PyObject *op
2663
2663
  case Py_EQ: {
2664
2664
  bool r = operand1 == operand2;
2665
2665
  PyObject *result = BOOL_FROM(r);
2666
- Py_INCREF(result);
2666
+ Py_INCREF_IMMORTAL(result);
2667
2667
  return result;
2668
2668
  }
2669
2669
  case Py_NE: {
2670
2670
  bool r = operand1 != operand2;
2671
2671
  PyObject *result = BOOL_FROM(r);
2672
- Py_INCREF(result);
2672
+ Py_INCREF_IMMORTAL(result);
2673
2673
  return result;
2674
2674
  }
2675
2675
  default:
@@ -2709,7 +2709,7 @@ static bool COMPARE_GT_CBOOL_UNICODE_UNICODE(PyObject *operand1, PyObject *opera
2709
2709
 
2710
2710
  // Convert to target type if necessary
2711
2711
  bool result = r == Py_True;
2712
- Py_DECREF(r);
2712
+ Py_DECREF_IMMORTAL(r);
2713
2713
 
2714
2714
  return result;
2715
2715
  }
@@ -2755,7 +2755,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2755
2755
  }
2756
2756
  }
2757
2757
 
2758
- Py_DECREF(result);
2758
+ Py_DECREF_IMMORTAL(result);
2759
2759
  }
2760
2760
 
2761
2761
  // No rich comparison worked, but maybe compare works.
@@ -2824,7 +2824,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2824
2824
  }
2825
2825
  }
2826
2826
 
2827
- Py_DECREF(result);
2827
+ Py_DECREF_IMMORTAL(result);
2828
2828
  }
2829
2829
  }
2830
2830
 
@@ -2846,7 +2846,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2846
2846
  }
2847
2847
  }
2848
2848
 
2849
- Py_DECREF(result);
2849
+ Py_DECREF_IMMORTAL(result);
2850
2850
  }
2851
2851
 
2852
2852
  f = PyUnicode_Type.tp_richcompare;
@@ -2867,7 +2867,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2867
2867
  }
2868
2868
  }
2869
2869
 
2870
- Py_DECREF(result);
2870
+ Py_DECREF_IMMORTAL(result);
2871
2871
  }
2872
2872
 
2873
2873
  int c;
@@ -2983,7 +2983,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
2983
2983
  }
2984
2984
  }
2985
2985
 
2986
- Py_DECREF(result);
2986
+ Py_DECREF_IMMORTAL(result);
2987
2987
  }
2988
2988
  }
2989
2989
 
@@ -3006,7 +3006,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
3006
3006
  }
3007
3007
  }
3008
3008
 
3009
- Py_DECREF(result);
3009
+ Py_DECREF_IMMORTAL(result);
3010
3010
  }
3011
3011
 
3012
3012
  if (checked_reverse_op == false) {
@@ -3029,7 +3029,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_UNICODE(PyObject *operand1, PyObject *o
3029
3029
  }
3030
3030
  }
3031
3031
 
3032
- Py_DECREF(result);
3032
+ Py_DECREF_IMMORTAL(result);
3033
3033
  }
3034
3034
  }
3035
3035
 
@@ -3105,7 +3105,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3105
3105
  }
3106
3106
  }
3107
3107
 
3108
- Py_DECREF(result);
3108
+ Py_DECREF_IMMORTAL(result);
3109
3109
  }
3110
3110
 
3111
3111
  // No rich comparison worked, but maybe compare works.
@@ -3174,7 +3174,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3174
3174
  }
3175
3175
  }
3176
3176
 
3177
- Py_DECREF(result);
3177
+ Py_DECREF_IMMORTAL(result);
3178
3178
  }
3179
3179
  }
3180
3180
 
@@ -3196,7 +3196,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3196
3196
  }
3197
3197
  }
3198
3198
 
3199
- Py_DECREF(result);
3199
+ Py_DECREF_IMMORTAL(result);
3200
3200
  }
3201
3201
 
3202
3202
  f = RICHCOMPARE(type2);
@@ -3217,7 +3217,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3217
3217
  }
3218
3218
  }
3219
3219
 
3220
- Py_DECREF(result);
3220
+ Py_DECREF_IMMORTAL(result);
3221
3221
  }
3222
3222
 
3223
3223
  int c;
@@ -3333,7 +3333,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3333
3333
  }
3334
3334
  }
3335
3335
 
3336
- Py_DECREF(result);
3336
+ Py_DECREF_IMMORTAL(result);
3337
3337
  }
3338
3338
  }
3339
3339
 
@@ -3356,7 +3356,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3356
3356
  }
3357
3357
  }
3358
3358
 
3359
- Py_DECREF(result);
3359
+ Py_DECREF_IMMORTAL(result);
3360
3360
  }
3361
3361
 
3362
3362
  if (checked_reverse_op == false) {
@@ -3379,7 +3379,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_UNICODE_OBJECT(PyObject *operand1, PyObject *o
3379
3379
  }
3380
3380
  }
3381
3381
 
3382
- Py_DECREF(result);
3382
+ Py_DECREF_IMMORTAL(result);
3383
3383
  }
3384
3384
  }
3385
3385
 
@@ -3429,7 +3429,7 @@ static PyObject *COMPARE_GT_OBJECT_BYTES_BYTES(PyObject *operand1, PyObject *ope
3429
3429
 
3430
3430
  // Convert to target type.
3431
3431
  PyObject *result = BOOL_FROM(r);
3432
- Py_INCREF(result);
3432
+ Py_INCREF_IMMORTAL(result);
3433
3433
  return result;
3434
3434
  }
3435
3435
 
@@ -3457,7 +3457,7 @@ static PyObject *COMPARE_GT_OBJECT_BYTES_BYTES(PyObject *operand1, PyObject *ope
3457
3457
 
3458
3458
  // Convert to target type.
3459
3459
  PyObject *result = BOOL_FROM(c != 0);
3460
- Py_INCREF(result);
3460
+ Py_INCREF_IMMORTAL(result);
3461
3461
  return result;
3462
3462
  }
3463
3463
  /* Code referring to "OBJECT" corresponds to any Python object and "BYTES" to Python3 'bytes'. */
@@ -3494,7 +3494,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3494
3494
  return result;
3495
3495
  }
3496
3496
 
3497
- Py_DECREF(result);
3497
+ Py_DECREF_IMMORTAL(result);
3498
3498
  }
3499
3499
 
3500
3500
  // No rich comparison worked, but maybe compare works.
@@ -3535,7 +3535,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3535
3535
 
3536
3536
  bool r = c != 0;
3537
3537
  PyObject *result = BOOL_FROM(r);
3538
- Py_INCREF(result);
3538
+ Py_INCREF_IMMORTAL(result);
3539
3539
  return result;
3540
3540
  }
3541
3541
  }
@@ -3555,7 +3555,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3555
3555
  return result;
3556
3556
  }
3557
3557
 
3558
- Py_DECREF(result);
3558
+ Py_DECREF_IMMORTAL(result);
3559
3559
  }
3560
3560
  }
3561
3561
 
@@ -3569,7 +3569,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3569
3569
  return result;
3570
3570
  }
3571
3571
 
3572
- Py_DECREF(result);
3572
+ Py_DECREF_IMMORTAL(result);
3573
3573
  }
3574
3574
 
3575
3575
  f = PyBytes_Type.tp_richcompare;
@@ -3582,7 +3582,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3582
3582
  return result;
3583
3583
  }
3584
3584
 
3585
- Py_DECREF(result);
3585
+ Py_DECREF_IMMORTAL(result);
3586
3586
  }
3587
3587
 
3588
3588
  int c;
@@ -3670,7 +3670,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3670
3670
 
3671
3671
  bool r = c != 0;
3672
3672
  PyObject *result = BOOL_FROM(r);
3673
- Py_INCREF(result);
3673
+ Py_INCREF_IMMORTAL(result);
3674
3674
  return result;
3675
3675
  #else
3676
3676
  bool checked_reverse_op = false;
@@ -3690,7 +3690,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3690
3690
  return result;
3691
3691
  }
3692
3692
 
3693
- Py_DECREF(result);
3693
+ Py_DECREF_IMMORTAL(result);
3694
3694
  }
3695
3695
  }
3696
3696
 
@@ -3705,7 +3705,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3705
3705
  return result;
3706
3706
  }
3707
3707
 
3708
- Py_DECREF(result);
3708
+ Py_DECREF_IMMORTAL(result);
3709
3709
  }
3710
3710
 
3711
3711
  if (checked_reverse_op == false) {
@@ -3720,7 +3720,7 @@ PyObject *RICH_COMPARE_GT_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
 
@@ -3732,13 +3732,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_BYTES(PyObject *operand1, PyObject *oper
3732
3732
  case Py_EQ: {
3733
3733
  bool r = operand1 == operand2;
3734
3734
  PyObject *result = BOOL_FROM(r);
3735
- Py_INCREF(result);
3735
+ Py_INCREF_IMMORTAL(result);
3736
3736
  return result;
3737
3737
  }
3738
3738
  case Py_NE: {
3739
3739
  bool r = operand1 != operand2;
3740
3740
  PyObject *result = BOOL_FROM(r);
3741
- Py_INCREF(result);
3741
+ Py_INCREF_IMMORTAL(result);
3742
3742
  return result;
3743
3743
  }
3744
3744
  default:
@@ -3788,7 +3788,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3788
3788
  return result;
3789
3789
  }
3790
3790
 
3791
- Py_DECREF(result);
3791
+ Py_DECREF_IMMORTAL(result);
3792
3792
  }
3793
3793
 
3794
3794
  // No rich comparison worked, but maybe compare works.
@@ -3829,7 +3829,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3829
3829
 
3830
3830
  bool r = c != 0;
3831
3831
  PyObject *result = BOOL_FROM(r);
3832
- Py_INCREF(result);
3832
+ Py_INCREF_IMMORTAL(result);
3833
3833
  return result;
3834
3834
  }
3835
3835
  }
@@ -3849,7 +3849,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3849
3849
  return result;
3850
3850
  }
3851
3851
 
3852
- Py_DECREF(result);
3852
+ Py_DECREF_IMMORTAL(result);
3853
3853
  }
3854
3854
  }
3855
3855
 
@@ -3863,7 +3863,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3863
3863
  return result;
3864
3864
  }
3865
3865
 
3866
- Py_DECREF(result);
3866
+ Py_DECREF_IMMORTAL(result);
3867
3867
  }
3868
3868
 
3869
3869
  f = RICHCOMPARE(type2);
@@ -3876,7 +3876,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3876
3876
  return result;
3877
3877
  }
3878
3878
 
3879
- Py_DECREF(result);
3879
+ Py_DECREF_IMMORTAL(result);
3880
3880
  }
3881
3881
 
3882
3882
  int c;
@@ -3964,7 +3964,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3964
3964
 
3965
3965
  bool r = c != 0;
3966
3966
  PyObject *result = BOOL_FROM(r);
3967
- Py_INCREF(result);
3967
+ Py_INCREF_IMMORTAL(result);
3968
3968
  return result;
3969
3969
  #else
3970
3970
  bool checked_reverse_op = false;
@@ -3984,7 +3984,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3984
3984
  return result;
3985
3985
  }
3986
3986
 
3987
- Py_DECREF(result);
3987
+ Py_DECREF_IMMORTAL(result);
3988
3988
  }
3989
3989
  }
3990
3990
 
@@ -3999,7 +3999,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
3999
3999
  return result;
4000
4000
  }
4001
4001
 
4002
- Py_DECREF(result);
4002
+ Py_DECREF_IMMORTAL(result);
4003
4003
  }
4004
4004
 
4005
4005
  if (checked_reverse_op == false) {
@@ -4014,7 +4014,7 @@ PyObject *RICH_COMPARE_GT_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
 
@@ -4026,13 +4026,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_BYTES_OBJECT(PyObject *operand1, PyObject *oper
4026
4026
  case Py_EQ: {
4027
4027
  bool r = operand1 == operand2;
4028
4028
  PyObject *result = BOOL_FROM(r);
4029
- Py_INCREF(result);
4029
+ Py_INCREF_IMMORTAL(result);
4030
4030
  return result;
4031
4031
  }
4032
4032
  case Py_NE: {
4033
4033
  bool r = operand1 != operand2;
4034
4034
  PyObject *result = BOOL_FROM(r);
4035
- Py_INCREF(result);
4035
+ Py_INCREF_IMMORTAL(result);
4036
4036
  return result;
4037
4037
  }
4038
4038
  default:
@@ -4136,7 +4136,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4136
4136
  }
4137
4137
  }
4138
4138
 
4139
- Py_DECREF(result);
4139
+ Py_DECREF_IMMORTAL(result);
4140
4140
  }
4141
4141
 
4142
4142
  // No rich comparison worked, but maybe compare works.
@@ -4205,7 +4205,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4205
4205
  }
4206
4206
  }
4207
4207
 
4208
- Py_DECREF(result);
4208
+ Py_DECREF_IMMORTAL(result);
4209
4209
  }
4210
4210
  }
4211
4211
 
@@ -4227,7 +4227,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4227
4227
  }
4228
4228
  }
4229
4229
 
4230
- Py_DECREF(result);
4230
+ Py_DECREF_IMMORTAL(result);
4231
4231
  }
4232
4232
 
4233
4233
  f = PyBytes_Type.tp_richcompare;
@@ -4248,7 +4248,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4248
4248
  }
4249
4249
  }
4250
4250
 
4251
- Py_DECREF(result);
4251
+ Py_DECREF_IMMORTAL(result);
4252
4252
  }
4253
4253
 
4254
4254
  int c;
@@ -4364,7 +4364,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4364
4364
  }
4365
4365
  }
4366
4366
 
4367
- Py_DECREF(result);
4367
+ Py_DECREF_IMMORTAL(result);
4368
4368
  }
4369
4369
  }
4370
4370
 
@@ -4387,7 +4387,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_BYTES(PyObject *operand1, PyObject *ope
4387
4387
  }
4388
4388
  }
4389
4389
 
4390
- Py_DECREF(result);
4390
+ Py_DECREF_IMMORTAL(result);
4391
4391
  }
4392
4392
 
4393
4393
  if (checked_reverse_op == false) {
@@ -4410,7 +4410,7 @@ nuitka_bool RICH_COMPARE_GT_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
 
@@ -4486,7 +4486,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4486
4486
  }
4487
4487
  }
4488
4488
 
4489
- Py_DECREF(result);
4489
+ Py_DECREF_IMMORTAL(result);
4490
4490
  }
4491
4491
 
4492
4492
  // No rich comparison worked, but maybe compare works.
@@ -4555,7 +4555,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4555
4555
  }
4556
4556
  }
4557
4557
 
4558
- Py_DECREF(result);
4558
+ Py_DECREF_IMMORTAL(result);
4559
4559
  }
4560
4560
  }
4561
4561
 
@@ -4577,7 +4577,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4577
4577
  }
4578
4578
  }
4579
4579
 
4580
- Py_DECREF(result);
4580
+ Py_DECREF_IMMORTAL(result);
4581
4581
  }
4582
4582
 
4583
4583
  f = RICHCOMPARE(type2);
@@ -4598,7 +4598,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4598
4598
  }
4599
4599
  }
4600
4600
 
4601
- Py_DECREF(result);
4601
+ Py_DECREF_IMMORTAL(result);
4602
4602
  }
4603
4603
 
4604
4604
  int c;
@@ -4714,7 +4714,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4714
4714
  }
4715
4715
  }
4716
4716
 
4717
- Py_DECREF(result);
4717
+ Py_DECREF_IMMORTAL(result);
4718
4718
  }
4719
4719
  }
4720
4720
 
@@ -4737,7 +4737,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_BYTES_OBJECT(PyObject *operand1, PyObject *ope
4737
4737
  }
4738
4738
  }
4739
4739
 
4740
- Py_DECREF(result);
4740
+ Py_DECREF_IMMORTAL(result);
4741
4741
  }
4742
4742
 
4743
4743
  if (checked_reverse_op == false) {
@@ -4760,7 +4760,7 @@ nuitka_bool RICH_COMPARE_GT_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
 
@@ -4828,7 +4828,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4828
4828
  return result;
4829
4829
  }
4830
4830
 
4831
- Py_DECREF(result);
4831
+ Py_DECREF_IMMORTAL(result);
4832
4832
  }
4833
4833
 
4834
4834
  // No rich comparison worked, but maybe compare works.
@@ -4869,7 +4869,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4869
4869
 
4870
4870
  bool r = c != 0;
4871
4871
  PyObject *result = BOOL_FROM(r);
4872
- Py_INCREF(result);
4872
+ Py_INCREF_IMMORTAL(result);
4873
4873
  return result;
4874
4874
  }
4875
4875
  }
@@ -4889,7 +4889,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4889
4889
  return result;
4890
4890
  }
4891
4891
 
4892
- Py_DECREF(result);
4892
+ Py_DECREF_IMMORTAL(result);
4893
4893
  }
4894
4894
  }
4895
4895
 
@@ -4903,7 +4903,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4903
4903
  return result;
4904
4904
  }
4905
4905
 
4906
- Py_DECREF(result);
4906
+ Py_DECREF_IMMORTAL(result);
4907
4907
  }
4908
4908
 
4909
4909
  f = NULL;
@@ -4916,7 +4916,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
4916
4916
  return result;
4917
4917
  }
4918
4918
 
4919
- Py_DECREF(result);
4919
+ Py_DECREF_IMMORTAL(result);
4920
4920
  }
4921
4921
 
4922
4922
  int c;
@@ -5004,7 +5004,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5004
5004
 
5005
5005
  bool r = c != 0;
5006
5006
  PyObject *result = BOOL_FROM(r);
5007
- Py_INCREF(result);
5007
+ Py_INCREF_IMMORTAL(result);
5008
5008
  return result;
5009
5009
  #else
5010
5010
  bool checked_reverse_op = false;
@@ -5024,7 +5024,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5024
5024
  return result;
5025
5025
  }
5026
5026
 
5027
- Py_DECREF(result);
5027
+ Py_DECREF_IMMORTAL(result);
5028
5028
  }
5029
5029
  }
5030
5030
 
@@ -5039,7 +5039,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5039
5039
  return result;
5040
5040
  }
5041
5041
 
5042
- Py_DECREF(result);
5042
+ Py_DECREF_IMMORTAL(result);
5043
5043
  }
5044
5044
 
5045
5045
  if (checked_reverse_op == false) {
@@ -5054,7 +5054,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5054
5054
  return result;
5055
5055
  }
5056
5056
 
5057
- Py_DECREF(result);
5057
+ Py_DECREF_IMMORTAL(result);
5058
5058
  }
5059
5059
  }
5060
5060
 
@@ -5066,13 +5066,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_INT(PyObject *operand1, PyObject *operan
5066
5066
  case Py_EQ: {
5067
5067
  bool r = operand1 == operand2;
5068
5068
  PyObject *result = BOOL_FROM(r);
5069
- Py_INCREF(result);
5069
+ Py_INCREF_IMMORTAL(result);
5070
5070
  return result;
5071
5071
  }
5072
5072
  case Py_NE: {
5073
5073
  bool r = operand1 != operand2;
5074
5074
  PyObject *result = BOOL_FROM(r);
5075
- Py_INCREF(result);
5075
+ Py_INCREF_IMMORTAL(result);
5076
5076
  return result;
5077
5077
  }
5078
5078
  default:
@@ -5122,7 +5122,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5122
5122
  return result;
5123
5123
  }
5124
5124
 
5125
- Py_DECREF(result);
5125
+ Py_DECREF_IMMORTAL(result);
5126
5126
  }
5127
5127
 
5128
5128
  // No rich comparison worked, but maybe compare works.
@@ -5163,7 +5163,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5163
5163
 
5164
5164
  bool r = c != 0;
5165
5165
  PyObject *result = BOOL_FROM(r);
5166
- Py_INCREF(result);
5166
+ Py_INCREF_IMMORTAL(result);
5167
5167
  return result;
5168
5168
  }
5169
5169
  }
@@ -5183,7 +5183,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5183
5183
  return result;
5184
5184
  }
5185
5185
 
5186
- Py_DECREF(result);
5186
+ Py_DECREF_IMMORTAL(result);
5187
5187
  }
5188
5188
  }
5189
5189
 
@@ -5197,7 +5197,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5197
5197
  return result;
5198
5198
  }
5199
5199
 
5200
- Py_DECREF(result);
5200
+ Py_DECREF_IMMORTAL(result);
5201
5201
  }
5202
5202
 
5203
5203
  f = RICHCOMPARE(type2);
@@ -5210,7 +5210,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5210
5210
  return result;
5211
5211
  }
5212
5212
 
5213
- Py_DECREF(result);
5213
+ Py_DECREF_IMMORTAL(result);
5214
5214
  }
5215
5215
 
5216
5216
  int c;
@@ -5298,7 +5298,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5298
5298
 
5299
5299
  bool r = c != 0;
5300
5300
  PyObject *result = BOOL_FROM(r);
5301
- Py_INCREF(result);
5301
+ Py_INCREF_IMMORTAL(result);
5302
5302
  return result;
5303
5303
  #else
5304
5304
  bool checked_reverse_op = false;
@@ -5318,7 +5318,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5318
5318
  return result;
5319
5319
  }
5320
5320
 
5321
- Py_DECREF(result);
5321
+ Py_DECREF_IMMORTAL(result);
5322
5322
  }
5323
5323
  }
5324
5324
 
@@ -5333,7 +5333,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5333
5333
  return result;
5334
5334
  }
5335
5335
 
5336
- Py_DECREF(result);
5336
+ Py_DECREF_IMMORTAL(result);
5337
5337
  }
5338
5338
 
5339
5339
  if (checked_reverse_op == false) {
@@ -5348,7 +5348,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5348
5348
  return result;
5349
5349
  }
5350
5350
 
5351
- Py_DECREF(result);
5351
+ Py_DECREF_IMMORTAL(result);
5352
5352
  }
5353
5353
  }
5354
5354
 
@@ -5360,13 +5360,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_INT_OBJECT(PyObject *operand1, PyObject *operan
5360
5360
  case Py_EQ: {
5361
5361
  bool r = operand1 == operand2;
5362
5362
  PyObject *result = BOOL_FROM(r);
5363
- Py_INCREF(result);
5363
+ Py_INCREF_IMMORTAL(result);
5364
5364
  return result;
5365
5365
  }
5366
5366
  case Py_NE: {
5367
5367
  bool r = operand1 != operand2;
5368
5368
  PyObject *result = BOOL_FROM(r);
5369
- Py_INCREF(result);
5369
+ Py_INCREF_IMMORTAL(result);
5370
5370
  return result;
5371
5371
  }
5372
5372
  default:
@@ -5424,7 +5424,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5424
5424
  }
5425
5425
  }
5426
5426
 
5427
- Py_DECREF(result);
5427
+ Py_DECREF_IMMORTAL(result);
5428
5428
  }
5429
5429
 
5430
5430
  // No rich comparison worked, but maybe compare works.
@@ -5493,7 +5493,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5493
5493
  }
5494
5494
  }
5495
5495
 
5496
- Py_DECREF(result);
5496
+ Py_DECREF_IMMORTAL(result);
5497
5497
  }
5498
5498
  }
5499
5499
 
@@ -5515,7 +5515,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5515
5515
  }
5516
5516
  }
5517
5517
 
5518
- Py_DECREF(result);
5518
+ Py_DECREF_IMMORTAL(result);
5519
5519
  }
5520
5520
 
5521
5521
  f = NULL;
@@ -5536,7 +5536,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5536
5536
  }
5537
5537
  }
5538
5538
 
5539
- Py_DECREF(result);
5539
+ Py_DECREF_IMMORTAL(result);
5540
5540
  }
5541
5541
 
5542
5542
  int c;
@@ -5652,7 +5652,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5652
5652
  }
5653
5653
  }
5654
5654
 
5655
- Py_DECREF(result);
5655
+ Py_DECREF_IMMORTAL(result);
5656
5656
  }
5657
5657
  }
5658
5658
 
@@ -5675,7 +5675,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5675
5675
  }
5676
5676
  }
5677
5677
 
5678
- Py_DECREF(result);
5678
+ Py_DECREF_IMMORTAL(result);
5679
5679
  }
5680
5680
 
5681
5681
  if (checked_reverse_op == false) {
@@ -5698,7 +5698,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_INT(PyObject *operand1, PyObject *opera
5698
5698
  }
5699
5699
  }
5700
5700
 
5701
- Py_DECREF(result);
5701
+ Py_DECREF_IMMORTAL(result);
5702
5702
  }
5703
5703
  }
5704
5704
 
@@ -5774,7 +5774,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5774
5774
  }
5775
5775
  }
5776
5776
 
5777
- Py_DECREF(result);
5777
+ Py_DECREF_IMMORTAL(result);
5778
5778
  }
5779
5779
 
5780
5780
  // No rich comparison worked, but maybe compare works.
@@ -5843,7 +5843,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5843
5843
  }
5844
5844
  }
5845
5845
 
5846
- Py_DECREF(result);
5846
+ Py_DECREF_IMMORTAL(result);
5847
5847
  }
5848
5848
  }
5849
5849
 
@@ -5865,7 +5865,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5865
5865
  }
5866
5866
  }
5867
5867
 
5868
- Py_DECREF(result);
5868
+ Py_DECREF_IMMORTAL(result);
5869
5869
  }
5870
5870
 
5871
5871
  f = RICHCOMPARE(type2);
@@ -5886,7 +5886,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
5886
5886
  }
5887
5887
  }
5888
5888
 
5889
- Py_DECREF(result);
5889
+ Py_DECREF_IMMORTAL(result);
5890
5890
  }
5891
5891
 
5892
5892
  int c;
@@ -6002,7 +6002,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6002
6002
  }
6003
6003
  }
6004
6004
 
6005
- Py_DECREF(result);
6005
+ Py_DECREF_IMMORTAL(result);
6006
6006
  }
6007
6007
  }
6008
6008
 
@@ -6025,7 +6025,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6025
6025
  }
6026
6026
  }
6027
6027
 
6028
- Py_DECREF(result);
6028
+ Py_DECREF_IMMORTAL(result);
6029
6029
  }
6030
6030
 
6031
6031
  if (checked_reverse_op == false) {
@@ -6048,7 +6048,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_INT_OBJECT(PyObject *operand1, PyObject *opera
6048
6048
  }
6049
6049
  }
6050
6050
 
6051
- Py_DECREF(result);
6051
+ Py_DECREF_IMMORTAL(result);
6052
6052
  }
6053
6053
  }
6054
6054
 
@@ -6117,7 +6117,7 @@ static PyObject *COMPARE_GT_OBJECT_LONG_LONG(PyObject *operand1, PyObject *opera
6117
6117
 
6118
6118
  // Convert to target type.
6119
6119
  PyObject *result = BOOL_FROM(r);
6120
- Py_INCREF(result);
6120
+ Py_INCREF_IMMORTAL(result);
6121
6121
  return result;
6122
6122
  }
6123
6123
  /* Code referring to "OBJECT" corresponds to any Python object and "LONG" to Python2 'long', Python3 'int'. */
@@ -6154,7 +6154,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6154
6154
  return result;
6155
6155
  }
6156
6156
 
6157
- Py_DECREF(result);
6157
+ Py_DECREF_IMMORTAL(result);
6158
6158
  }
6159
6159
 
6160
6160
  // No rich comparison worked, but maybe compare works.
@@ -6195,7 +6195,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6195
6195
 
6196
6196
  bool r = c != 0;
6197
6197
  PyObject *result = BOOL_FROM(r);
6198
- Py_INCREF(result);
6198
+ Py_INCREF_IMMORTAL(result);
6199
6199
  return result;
6200
6200
  }
6201
6201
  }
@@ -6215,7 +6215,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6215
6215
  return result;
6216
6216
  }
6217
6217
 
6218
- Py_DECREF(result);
6218
+ Py_DECREF_IMMORTAL(result);
6219
6219
  }
6220
6220
  }
6221
6221
 
@@ -6229,7 +6229,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6229
6229
  return result;
6230
6230
  }
6231
6231
 
6232
- Py_DECREF(result);
6232
+ Py_DECREF_IMMORTAL(result);
6233
6233
  }
6234
6234
 
6235
6235
  f = (PYTHON_VERSION < 0x300 ? NULL : PyLong_Type.tp_richcompare);
@@ -6242,7 +6242,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6242
6242
  return result;
6243
6243
  }
6244
6244
 
6245
- Py_DECREF(result);
6245
+ Py_DECREF_IMMORTAL(result);
6246
6246
  }
6247
6247
 
6248
6248
  int c;
@@ -6330,7 +6330,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6330
6330
 
6331
6331
  bool r = c != 0;
6332
6332
  PyObject *result = BOOL_FROM(r);
6333
- Py_INCREF(result);
6333
+ Py_INCREF_IMMORTAL(result);
6334
6334
  return result;
6335
6335
  #else
6336
6336
  bool checked_reverse_op = false;
@@ -6350,7 +6350,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6350
6350
  return result;
6351
6351
  }
6352
6352
 
6353
- Py_DECREF(result);
6353
+ Py_DECREF_IMMORTAL(result);
6354
6354
  }
6355
6355
  }
6356
6356
 
@@ -6365,7 +6365,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6365
6365
  return result;
6366
6366
  }
6367
6367
 
6368
- Py_DECREF(result);
6368
+ Py_DECREF_IMMORTAL(result);
6369
6369
  }
6370
6370
 
6371
6371
  if (checked_reverse_op == false) {
@@ -6380,7 +6380,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6380
6380
  return result;
6381
6381
  }
6382
6382
 
6383
- Py_DECREF(result);
6383
+ Py_DECREF_IMMORTAL(result);
6384
6384
  }
6385
6385
  }
6386
6386
 
@@ -6392,13 +6392,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LONG(PyObject *operand1, PyObject *opera
6392
6392
  case Py_EQ: {
6393
6393
  bool r = operand1 == operand2;
6394
6394
  PyObject *result = BOOL_FROM(r);
6395
- Py_INCREF(result);
6395
+ Py_INCREF_IMMORTAL(result);
6396
6396
  return result;
6397
6397
  }
6398
6398
  case Py_NE: {
6399
6399
  bool r = operand1 != operand2;
6400
6400
  PyObject *result = BOOL_FROM(r);
6401
- Py_INCREF(result);
6401
+ Py_INCREF_IMMORTAL(result);
6402
6402
  return result;
6403
6403
  }
6404
6404
  default:
@@ -6448,7 +6448,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6448
6448
  return result;
6449
6449
  }
6450
6450
 
6451
- Py_DECREF(result);
6451
+ Py_DECREF_IMMORTAL(result);
6452
6452
  }
6453
6453
 
6454
6454
  // No rich comparison worked, but maybe compare works.
@@ -6489,7 +6489,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6489
6489
 
6490
6490
  bool r = c != 0;
6491
6491
  PyObject *result = BOOL_FROM(r);
6492
- Py_INCREF(result);
6492
+ Py_INCREF_IMMORTAL(result);
6493
6493
  return result;
6494
6494
  }
6495
6495
  }
@@ -6509,7 +6509,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6509
6509
  return result;
6510
6510
  }
6511
6511
 
6512
- Py_DECREF(result);
6512
+ Py_DECREF_IMMORTAL(result);
6513
6513
  }
6514
6514
  }
6515
6515
 
@@ -6523,7 +6523,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6523
6523
  return result;
6524
6524
  }
6525
6525
 
6526
- Py_DECREF(result);
6526
+ Py_DECREF_IMMORTAL(result);
6527
6527
  }
6528
6528
 
6529
6529
  f = RICHCOMPARE(type2);
@@ -6536,7 +6536,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6536
6536
  return result;
6537
6537
  }
6538
6538
 
6539
- Py_DECREF(result);
6539
+ Py_DECREF_IMMORTAL(result);
6540
6540
  }
6541
6541
 
6542
6542
  int c;
@@ -6624,7 +6624,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6624
6624
 
6625
6625
  bool r = c != 0;
6626
6626
  PyObject *result = BOOL_FROM(r);
6627
- Py_INCREF(result);
6627
+ Py_INCREF_IMMORTAL(result);
6628
6628
  return result;
6629
6629
  #else
6630
6630
  bool checked_reverse_op = false;
@@ -6644,7 +6644,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6644
6644
  return result;
6645
6645
  }
6646
6646
 
6647
- Py_DECREF(result);
6647
+ Py_DECREF_IMMORTAL(result);
6648
6648
  }
6649
6649
  }
6650
6650
 
@@ -6659,7 +6659,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6659
6659
  return result;
6660
6660
  }
6661
6661
 
6662
- Py_DECREF(result);
6662
+ Py_DECREF_IMMORTAL(result);
6663
6663
  }
6664
6664
 
6665
6665
  if (checked_reverse_op == false) {
@@ -6674,7 +6674,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6674
6674
  return result;
6675
6675
  }
6676
6676
 
6677
- Py_DECREF(result);
6677
+ Py_DECREF_IMMORTAL(result);
6678
6678
  }
6679
6679
  }
6680
6680
 
@@ -6686,13 +6686,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_LONG_OBJECT(PyObject *operand1, PyObject *opera
6686
6686
  case Py_EQ: {
6687
6687
  bool r = operand1 == operand2;
6688
6688
  PyObject *result = BOOL_FROM(r);
6689
- Py_INCREF(result);
6689
+ Py_INCREF_IMMORTAL(result);
6690
6690
  return result;
6691
6691
  }
6692
6692
  case Py_NE: {
6693
6693
  bool r = operand1 != operand2;
6694
6694
  PyObject *result = BOOL_FROM(r);
6695
- Py_INCREF(result);
6695
+ Py_INCREF_IMMORTAL(result);
6696
6696
  return result;
6697
6697
  }
6698
6698
  default:
@@ -6789,7 +6789,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6789
6789
  }
6790
6790
  }
6791
6791
 
6792
- Py_DECREF(result);
6792
+ Py_DECREF_IMMORTAL(result);
6793
6793
  }
6794
6794
 
6795
6795
  // No rich comparison worked, but maybe compare works.
@@ -6858,7 +6858,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6858
6858
  }
6859
6859
  }
6860
6860
 
6861
- Py_DECREF(result);
6861
+ Py_DECREF_IMMORTAL(result);
6862
6862
  }
6863
6863
  }
6864
6864
 
@@ -6880,7 +6880,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6880
6880
  }
6881
6881
  }
6882
6882
 
6883
- Py_DECREF(result);
6883
+ Py_DECREF_IMMORTAL(result);
6884
6884
  }
6885
6885
 
6886
6886
  f = (PYTHON_VERSION < 0x300 ? NULL : PyLong_Type.tp_richcompare);
@@ -6901,7 +6901,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
6901
6901
  }
6902
6902
  }
6903
6903
 
6904
- Py_DECREF(result);
6904
+ Py_DECREF_IMMORTAL(result);
6905
6905
  }
6906
6906
 
6907
6907
  int c;
@@ -7017,7 +7017,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7017
7017
  }
7018
7018
  }
7019
7019
 
7020
- Py_DECREF(result);
7020
+ Py_DECREF_IMMORTAL(result);
7021
7021
  }
7022
7022
  }
7023
7023
 
@@ -7040,7 +7040,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7040
7040
  }
7041
7041
  }
7042
7042
 
7043
- Py_DECREF(result);
7043
+ Py_DECREF_IMMORTAL(result);
7044
7044
  }
7045
7045
 
7046
7046
  if (checked_reverse_op == false) {
@@ -7063,7 +7063,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LONG(PyObject *operand1, PyObject *oper
7063
7063
  }
7064
7064
  }
7065
7065
 
7066
- Py_DECREF(result);
7066
+ Py_DECREF_IMMORTAL(result);
7067
7067
  }
7068
7068
  }
7069
7069
 
@@ -7139,7 +7139,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7139
7139
  }
7140
7140
  }
7141
7141
 
7142
- Py_DECREF(result);
7142
+ Py_DECREF_IMMORTAL(result);
7143
7143
  }
7144
7144
 
7145
7145
  // No rich comparison worked, but maybe compare works.
@@ -7208,7 +7208,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7208
7208
  }
7209
7209
  }
7210
7210
 
7211
- Py_DECREF(result);
7211
+ Py_DECREF_IMMORTAL(result);
7212
7212
  }
7213
7213
  }
7214
7214
 
@@ -7230,7 +7230,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7230
7230
  }
7231
7231
  }
7232
7232
 
7233
- Py_DECREF(result);
7233
+ Py_DECREF_IMMORTAL(result);
7234
7234
  }
7235
7235
 
7236
7236
  f = RICHCOMPARE(type2);
@@ -7251,7 +7251,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7251
7251
  }
7252
7252
  }
7253
7253
 
7254
- Py_DECREF(result);
7254
+ Py_DECREF_IMMORTAL(result);
7255
7255
  }
7256
7256
 
7257
7257
  int c;
@@ -7367,7 +7367,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7367
7367
  }
7368
7368
  }
7369
7369
 
7370
- Py_DECREF(result);
7370
+ Py_DECREF_IMMORTAL(result);
7371
7371
  }
7372
7372
  }
7373
7373
 
@@ -7390,7 +7390,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7390
7390
  }
7391
7391
  }
7392
7392
 
7393
- Py_DECREF(result);
7393
+ Py_DECREF_IMMORTAL(result);
7394
7394
  }
7395
7395
 
7396
7396
  if (checked_reverse_op == false) {
@@ -7413,7 +7413,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LONG_OBJECT(PyObject *operand1, PyObject *oper
7413
7413
  }
7414
7414
  }
7415
7415
 
7416
- Py_DECREF(result);
7416
+ Py_DECREF_IMMORTAL(result);
7417
7417
  }
7418
7418
  }
7419
7419
 
@@ -7460,7 +7460,7 @@ static PyObject *COMPARE_GT_OBJECT_FLOAT_FLOAT(PyObject *operand1, PyObject *ope
7460
7460
 
7461
7461
  // Convert to target type.
7462
7462
  PyObject *result = BOOL_FROM(r);
7463
- Py_INCREF(result);
7463
+ Py_INCREF_IMMORTAL(result);
7464
7464
  return result;
7465
7465
  }
7466
7466
  /* Code referring to "OBJECT" corresponds to any Python object and "FLOAT" to Python 'float'. */
@@ -7497,7 +7497,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7497
7497
  return result;
7498
7498
  }
7499
7499
 
7500
- Py_DECREF(result);
7500
+ Py_DECREF_IMMORTAL(result);
7501
7501
  }
7502
7502
 
7503
7503
  // No rich comparison worked, but maybe compare works.
@@ -7538,7 +7538,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7538
7538
 
7539
7539
  bool r = c != 0;
7540
7540
  PyObject *result = BOOL_FROM(r);
7541
- Py_INCREF(result);
7541
+ Py_INCREF_IMMORTAL(result);
7542
7542
  return result;
7543
7543
  }
7544
7544
  }
@@ -7558,7 +7558,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7558
7558
  return result;
7559
7559
  }
7560
7560
 
7561
- Py_DECREF(result);
7561
+ Py_DECREF_IMMORTAL(result);
7562
7562
  }
7563
7563
  }
7564
7564
 
@@ -7572,7 +7572,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7572
7572
  return result;
7573
7573
  }
7574
7574
 
7575
- Py_DECREF(result);
7575
+ Py_DECREF_IMMORTAL(result);
7576
7576
  }
7577
7577
 
7578
7578
  f = PyFloat_Type.tp_richcompare;
@@ -7585,7 +7585,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7585
7585
  return result;
7586
7586
  }
7587
7587
 
7588
- Py_DECREF(result);
7588
+ Py_DECREF_IMMORTAL(result);
7589
7589
  }
7590
7590
 
7591
7591
  int c;
@@ -7673,7 +7673,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7673
7673
 
7674
7674
  bool r = c != 0;
7675
7675
  PyObject *result = BOOL_FROM(r);
7676
- Py_INCREF(result);
7676
+ Py_INCREF_IMMORTAL(result);
7677
7677
  return result;
7678
7678
  #else
7679
7679
  bool checked_reverse_op = false;
@@ -7693,7 +7693,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7693
7693
  return result;
7694
7694
  }
7695
7695
 
7696
- Py_DECREF(result);
7696
+ Py_DECREF_IMMORTAL(result);
7697
7697
  }
7698
7698
  }
7699
7699
 
@@ -7708,7 +7708,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7708
7708
  return result;
7709
7709
  }
7710
7710
 
7711
- Py_DECREF(result);
7711
+ Py_DECREF_IMMORTAL(result);
7712
7712
  }
7713
7713
 
7714
7714
  if (checked_reverse_op == false) {
@@ -7723,7 +7723,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7723
7723
  return result;
7724
7724
  }
7725
7725
 
7726
- Py_DECREF(result);
7726
+ Py_DECREF_IMMORTAL(result);
7727
7727
  }
7728
7728
  }
7729
7729
 
@@ -7735,13 +7735,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_FLOAT(PyObject *operand1, PyObject *oper
7735
7735
  case Py_EQ: {
7736
7736
  bool r = operand1 == operand2;
7737
7737
  PyObject *result = BOOL_FROM(r);
7738
- Py_INCREF(result);
7738
+ Py_INCREF_IMMORTAL(result);
7739
7739
  return result;
7740
7740
  }
7741
7741
  case Py_NE: {
7742
7742
  bool r = operand1 != operand2;
7743
7743
  PyObject *result = BOOL_FROM(r);
7744
- Py_INCREF(result);
7744
+ Py_INCREF_IMMORTAL(result);
7745
7745
  return result;
7746
7746
  }
7747
7747
  default:
@@ -7789,7 +7789,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7789
7789
  return result;
7790
7790
  }
7791
7791
 
7792
- Py_DECREF(result);
7792
+ Py_DECREF_IMMORTAL(result);
7793
7793
  }
7794
7794
 
7795
7795
  // No rich comparison worked, but maybe compare works.
@@ -7830,7 +7830,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7830
7830
 
7831
7831
  bool r = c != 0;
7832
7832
  PyObject *result = BOOL_FROM(r);
7833
- Py_INCREF(result);
7833
+ Py_INCREF_IMMORTAL(result);
7834
7834
  return result;
7835
7835
  }
7836
7836
  }
@@ -7850,7 +7850,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7850
7850
  return result;
7851
7851
  }
7852
7852
 
7853
- Py_DECREF(result);
7853
+ Py_DECREF_IMMORTAL(result);
7854
7854
  }
7855
7855
  }
7856
7856
 
@@ -7864,7 +7864,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7864
7864
  return result;
7865
7865
  }
7866
7866
 
7867
- Py_DECREF(result);
7867
+ Py_DECREF_IMMORTAL(result);
7868
7868
  }
7869
7869
 
7870
7870
  f = RICHCOMPARE(type2);
@@ -7877,7 +7877,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7877
7877
  return result;
7878
7878
  }
7879
7879
 
7880
- Py_DECREF(result);
7880
+ Py_DECREF_IMMORTAL(result);
7881
7881
  }
7882
7882
 
7883
7883
  int c;
@@ -7965,7 +7965,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7965
7965
 
7966
7966
  bool r = c != 0;
7967
7967
  PyObject *result = BOOL_FROM(r);
7968
- Py_INCREF(result);
7968
+ Py_INCREF_IMMORTAL(result);
7969
7969
  return result;
7970
7970
  #else
7971
7971
  bool checked_reverse_op = false;
@@ -7985,7 +7985,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
7985
7985
  return result;
7986
7986
  }
7987
7987
 
7988
- Py_DECREF(result);
7988
+ Py_DECREF_IMMORTAL(result);
7989
7989
  }
7990
7990
  }
7991
7991
 
@@ -8000,7 +8000,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8000
8000
  return result;
8001
8001
  }
8002
8002
 
8003
- Py_DECREF(result);
8003
+ Py_DECREF_IMMORTAL(result);
8004
8004
  }
8005
8005
 
8006
8006
  if (checked_reverse_op == false) {
@@ -8015,7 +8015,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8015
8015
  return result;
8016
8016
  }
8017
8017
 
8018
- Py_DECREF(result);
8018
+ Py_DECREF_IMMORTAL(result);
8019
8019
  }
8020
8020
  }
8021
8021
 
@@ -8027,13 +8027,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_FLOAT_OBJECT(PyObject *operand1, PyObject *oper
8027
8027
  case Py_EQ: {
8028
8028
  bool r = operand1 == operand2;
8029
8029
  PyObject *result = BOOL_FROM(r);
8030
- Py_INCREF(result);
8030
+ Py_INCREF_IMMORTAL(result);
8031
8031
  return result;
8032
8032
  }
8033
8033
  case Py_NE: {
8034
8034
  bool r = operand1 != operand2;
8035
8035
  PyObject *result = BOOL_FROM(r);
8036
- Py_INCREF(result);
8036
+ Py_INCREF_IMMORTAL(result);
8037
8037
  return result;
8038
8038
  }
8039
8039
  default:
@@ -8105,7 +8105,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8105
8105
  }
8106
8106
  }
8107
8107
 
8108
- Py_DECREF(result);
8108
+ Py_DECREF_IMMORTAL(result);
8109
8109
  }
8110
8110
 
8111
8111
  // No rich comparison worked, but maybe compare works.
@@ -8174,7 +8174,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8174
8174
  }
8175
8175
  }
8176
8176
 
8177
- Py_DECREF(result);
8177
+ Py_DECREF_IMMORTAL(result);
8178
8178
  }
8179
8179
  }
8180
8180
 
@@ -8196,7 +8196,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8196
8196
  }
8197
8197
  }
8198
8198
 
8199
- Py_DECREF(result);
8199
+ Py_DECREF_IMMORTAL(result);
8200
8200
  }
8201
8201
 
8202
8202
  f = PyFloat_Type.tp_richcompare;
@@ -8217,7 +8217,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8217
8217
  }
8218
8218
  }
8219
8219
 
8220
- Py_DECREF(result);
8220
+ Py_DECREF_IMMORTAL(result);
8221
8221
  }
8222
8222
 
8223
8223
  int c;
@@ -8333,7 +8333,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8333
8333
  }
8334
8334
  }
8335
8335
 
8336
- Py_DECREF(result);
8336
+ Py_DECREF_IMMORTAL(result);
8337
8337
  }
8338
8338
  }
8339
8339
 
@@ -8356,7 +8356,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8356
8356
  }
8357
8357
  }
8358
8358
 
8359
- Py_DECREF(result);
8359
+ Py_DECREF_IMMORTAL(result);
8360
8360
  }
8361
8361
 
8362
8362
  if (checked_reverse_op == false) {
@@ -8379,7 +8379,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_FLOAT(PyObject *operand1, PyObject *ope
8379
8379
  }
8380
8380
  }
8381
8381
 
8382
- Py_DECREF(result);
8382
+ Py_DECREF_IMMORTAL(result);
8383
8383
  }
8384
8384
  }
8385
8385
 
@@ -8453,7 +8453,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8453
8453
  }
8454
8454
  }
8455
8455
 
8456
- Py_DECREF(result);
8456
+ Py_DECREF_IMMORTAL(result);
8457
8457
  }
8458
8458
 
8459
8459
  // No rich comparison worked, but maybe compare works.
@@ -8522,7 +8522,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8522
8522
  }
8523
8523
  }
8524
8524
 
8525
- Py_DECREF(result);
8525
+ Py_DECREF_IMMORTAL(result);
8526
8526
  }
8527
8527
  }
8528
8528
 
@@ -8544,7 +8544,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8544
8544
  }
8545
8545
  }
8546
8546
 
8547
- Py_DECREF(result);
8547
+ Py_DECREF_IMMORTAL(result);
8548
8548
  }
8549
8549
 
8550
8550
  f = RICHCOMPARE(type2);
@@ -8565,7 +8565,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8565
8565
  }
8566
8566
  }
8567
8567
 
8568
- Py_DECREF(result);
8568
+ Py_DECREF_IMMORTAL(result);
8569
8569
  }
8570
8570
 
8571
8571
  int c;
@@ -8681,7 +8681,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8681
8681
  }
8682
8682
  }
8683
8683
 
8684
- Py_DECREF(result);
8684
+ Py_DECREF_IMMORTAL(result);
8685
8685
  }
8686
8686
  }
8687
8687
 
@@ -8704,7 +8704,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8704
8704
  }
8705
8705
  }
8706
8706
 
8707
- Py_DECREF(result);
8707
+ Py_DECREF_IMMORTAL(result);
8708
8708
  }
8709
8709
 
8710
8710
  if (checked_reverse_op == false) {
@@ -8727,7 +8727,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_FLOAT_OBJECT(PyObject *operand1, PyObject *ope
8727
8727
  }
8728
8728
  }
8729
8729
 
8730
- Py_DECREF(result);
8730
+ Py_DECREF_IMMORTAL(result);
8731
8731
  }
8732
8732
  }
8733
8733
 
@@ -8800,7 +8800,7 @@ static PyObject *COMPARE_GT_OBJECT_TUPLE_TUPLE(PyObject *operand1, PyObject *ope
8800
8800
 
8801
8801
  // Convert to target type.
8802
8802
  PyObject *result = BOOL_FROM(r);
8803
- Py_INCREF(result);
8803
+ Py_INCREF_IMMORTAL(result);
8804
8804
  return result;
8805
8805
  }
8806
8806
 
@@ -8840,7 +8840,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
8840
8840
  return result;
8841
8841
  }
8842
8842
 
8843
- Py_DECREF(result);
8843
+ Py_DECREF_IMMORTAL(result);
8844
8844
  }
8845
8845
 
8846
8846
  // No rich comparison worked, but maybe compare works.
@@ -8881,7 +8881,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
8881
8881
 
8882
8882
  bool r = c != 0;
8883
8883
  PyObject *result = BOOL_FROM(r);
8884
- Py_INCREF(result);
8884
+ Py_INCREF_IMMORTAL(result);
8885
8885
  return result;
8886
8886
  }
8887
8887
  }
@@ -8901,7 +8901,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
8901
8901
  return result;
8902
8902
  }
8903
8903
 
8904
- Py_DECREF(result);
8904
+ Py_DECREF_IMMORTAL(result);
8905
8905
  }
8906
8906
  }
8907
8907
 
@@ -8915,7 +8915,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
8915
8915
  return result;
8916
8916
  }
8917
8917
 
8918
- Py_DECREF(result);
8918
+ Py_DECREF_IMMORTAL(result);
8919
8919
  }
8920
8920
 
8921
8921
  f = PyTuple_Type.tp_richcompare;
@@ -8928,7 +8928,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
8928
8928
  return result;
8929
8929
  }
8930
8930
 
8931
- Py_DECREF(result);
8931
+ Py_DECREF_IMMORTAL(result);
8932
8932
  }
8933
8933
 
8934
8934
  int c;
@@ -9016,7 +9016,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9016
9016
 
9017
9017
  bool r = c != 0;
9018
9018
  PyObject *result = BOOL_FROM(r);
9019
- Py_INCREF(result);
9019
+ Py_INCREF_IMMORTAL(result);
9020
9020
  return result;
9021
9021
  #else
9022
9022
  bool checked_reverse_op = false;
@@ -9036,7 +9036,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9036
9036
  return result;
9037
9037
  }
9038
9038
 
9039
- Py_DECREF(result);
9039
+ Py_DECREF_IMMORTAL(result);
9040
9040
  }
9041
9041
  }
9042
9042
 
@@ -9051,7 +9051,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9051
9051
  return result;
9052
9052
  }
9053
9053
 
9054
- Py_DECREF(result);
9054
+ Py_DECREF_IMMORTAL(result);
9055
9055
  }
9056
9056
 
9057
9057
  if (checked_reverse_op == false) {
@@ -9066,7 +9066,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9066
9066
  return result;
9067
9067
  }
9068
9068
 
9069
- Py_DECREF(result);
9069
+ Py_DECREF_IMMORTAL(result);
9070
9070
  }
9071
9071
  }
9072
9072
 
@@ -9078,13 +9078,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_TUPLE(PyObject *operand1, PyObject *oper
9078
9078
  case Py_EQ: {
9079
9079
  bool r = operand1 == operand2;
9080
9080
  PyObject *result = BOOL_FROM(r);
9081
- Py_INCREF(result);
9081
+ Py_INCREF_IMMORTAL(result);
9082
9082
  return result;
9083
9083
  }
9084
9084
  case Py_NE: {
9085
9085
  bool r = operand1 != operand2;
9086
9086
  PyObject *result = BOOL_FROM(r);
9087
- Py_INCREF(result);
9087
+ Py_INCREF_IMMORTAL(result);
9088
9088
  return result;
9089
9089
  }
9090
9090
  default:
@@ -9132,7 +9132,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9132
9132
  return result;
9133
9133
  }
9134
9134
 
9135
- Py_DECREF(result);
9135
+ Py_DECREF_IMMORTAL(result);
9136
9136
  }
9137
9137
 
9138
9138
  // No rich comparison worked, but maybe compare works.
@@ -9173,7 +9173,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9173
9173
 
9174
9174
  bool r = c != 0;
9175
9175
  PyObject *result = BOOL_FROM(r);
9176
- Py_INCREF(result);
9176
+ Py_INCREF_IMMORTAL(result);
9177
9177
  return result;
9178
9178
  }
9179
9179
  }
@@ -9193,7 +9193,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9193
9193
  return result;
9194
9194
  }
9195
9195
 
9196
- Py_DECREF(result);
9196
+ Py_DECREF_IMMORTAL(result);
9197
9197
  }
9198
9198
  }
9199
9199
 
@@ -9207,7 +9207,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9207
9207
  return result;
9208
9208
  }
9209
9209
 
9210
- Py_DECREF(result);
9210
+ Py_DECREF_IMMORTAL(result);
9211
9211
  }
9212
9212
 
9213
9213
  f = RICHCOMPARE(type2);
@@ -9220,7 +9220,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9220
9220
  return result;
9221
9221
  }
9222
9222
 
9223
- Py_DECREF(result);
9223
+ Py_DECREF_IMMORTAL(result);
9224
9224
  }
9225
9225
 
9226
9226
  int c;
@@ -9308,7 +9308,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9308
9308
 
9309
9309
  bool r = c != 0;
9310
9310
  PyObject *result = BOOL_FROM(r);
9311
- Py_INCREF(result);
9311
+ Py_INCREF_IMMORTAL(result);
9312
9312
  return result;
9313
9313
  #else
9314
9314
  bool checked_reverse_op = false;
@@ -9328,7 +9328,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9328
9328
  return result;
9329
9329
  }
9330
9330
 
9331
- Py_DECREF(result);
9331
+ Py_DECREF_IMMORTAL(result);
9332
9332
  }
9333
9333
  }
9334
9334
 
@@ -9343,7 +9343,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9343
9343
  return result;
9344
9344
  }
9345
9345
 
9346
- Py_DECREF(result);
9346
+ Py_DECREF_IMMORTAL(result);
9347
9347
  }
9348
9348
 
9349
9349
  if (checked_reverse_op == false) {
@@ -9358,7 +9358,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9358
9358
  return result;
9359
9359
  }
9360
9360
 
9361
- Py_DECREF(result);
9361
+ Py_DECREF_IMMORTAL(result);
9362
9362
  }
9363
9363
  }
9364
9364
 
@@ -9370,13 +9370,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_TUPLE_OBJECT(PyObject *operand1, PyObject *oper
9370
9370
  case Py_EQ: {
9371
9371
  bool r = operand1 == operand2;
9372
9372
  PyObject *result = BOOL_FROM(r);
9373
- Py_INCREF(result);
9373
+ Py_INCREF_IMMORTAL(result);
9374
9374
  return result;
9375
9375
  }
9376
9376
  case Py_NE: {
9377
9377
  bool r = operand1 != operand2;
9378
9378
  PyObject *result = BOOL_FROM(r);
9379
- Py_INCREF(result);
9379
+ Py_INCREF_IMMORTAL(result);
9380
9380
  return result;
9381
9381
  }
9382
9382
  default:
@@ -9485,7 +9485,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9485
9485
  }
9486
9486
  }
9487
9487
 
9488
- Py_DECREF(result);
9488
+ Py_DECREF_IMMORTAL(result);
9489
9489
  }
9490
9490
 
9491
9491
  // No rich comparison worked, but maybe compare works.
@@ -9554,7 +9554,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9554
9554
  }
9555
9555
  }
9556
9556
 
9557
- Py_DECREF(result);
9557
+ Py_DECREF_IMMORTAL(result);
9558
9558
  }
9559
9559
  }
9560
9560
 
@@ -9576,7 +9576,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9576
9576
  }
9577
9577
  }
9578
9578
 
9579
- Py_DECREF(result);
9579
+ Py_DECREF_IMMORTAL(result);
9580
9580
  }
9581
9581
 
9582
9582
  f = PyTuple_Type.tp_richcompare;
@@ -9597,7 +9597,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9597
9597
  }
9598
9598
  }
9599
9599
 
9600
- Py_DECREF(result);
9600
+ Py_DECREF_IMMORTAL(result);
9601
9601
  }
9602
9602
 
9603
9603
  int c;
@@ -9713,7 +9713,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9713
9713
  }
9714
9714
  }
9715
9715
 
9716
- Py_DECREF(result);
9716
+ Py_DECREF_IMMORTAL(result);
9717
9717
  }
9718
9718
  }
9719
9719
 
@@ -9736,7 +9736,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9736
9736
  }
9737
9737
  }
9738
9738
 
9739
- Py_DECREF(result);
9739
+ Py_DECREF_IMMORTAL(result);
9740
9740
  }
9741
9741
 
9742
9742
  if (checked_reverse_op == false) {
@@ -9759,7 +9759,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_TUPLE(PyObject *operand1, PyObject *ope
9759
9759
  }
9760
9760
  }
9761
9761
 
9762
- Py_DECREF(result);
9762
+ Py_DECREF_IMMORTAL(result);
9763
9763
  }
9764
9764
  }
9765
9765
 
@@ -9833,7 +9833,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
9833
9833
  }
9834
9834
  }
9835
9835
 
9836
- Py_DECREF(result);
9836
+ Py_DECREF_IMMORTAL(result);
9837
9837
  }
9838
9838
 
9839
9839
  // No rich comparison worked, but maybe compare works.
@@ -9902,7 +9902,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
9902
9902
  }
9903
9903
  }
9904
9904
 
9905
- Py_DECREF(result);
9905
+ Py_DECREF_IMMORTAL(result);
9906
9906
  }
9907
9907
  }
9908
9908
 
@@ -9924,7 +9924,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
9924
9924
  }
9925
9925
  }
9926
9926
 
9927
- Py_DECREF(result);
9927
+ Py_DECREF_IMMORTAL(result);
9928
9928
  }
9929
9929
 
9930
9930
  f = RICHCOMPARE(type2);
@@ -9945,7 +9945,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
9945
9945
  }
9946
9946
  }
9947
9947
 
9948
- Py_DECREF(result);
9948
+ Py_DECREF_IMMORTAL(result);
9949
9949
  }
9950
9950
 
9951
9951
  int c;
@@ -10061,7 +10061,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10061
10061
  }
10062
10062
  }
10063
10063
 
10064
- Py_DECREF(result);
10064
+ Py_DECREF_IMMORTAL(result);
10065
10065
  }
10066
10066
  }
10067
10067
 
@@ -10084,7 +10084,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10084
10084
  }
10085
10085
  }
10086
10086
 
10087
- Py_DECREF(result);
10087
+ Py_DECREF_IMMORTAL(result);
10088
10088
  }
10089
10089
 
10090
10090
  if (checked_reverse_op == false) {
@@ -10107,7 +10107,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_TUPLE_OBJECT(PyObject *operand1, PyObject *ope
10107
10107
  }
10108
10108
  }
10109
10109
 
10110
- Py_DECREF(result);
10110
+ Py_DECREF_IMMORTAL(result);
10111
10111
  }
10112
10112
  }
10113
10113
 
@@ -10187,7 +10187,7 @@ static PyObject *COMPARE_GT_OBJECT_LIST_LIST(PyObject *operand1, PyObject *opera
10187
10187
 
10188
10188
  // Convert to target type.
10189
10189
  PyObject *result = BOOL_FROM(r);
10190
- Py_INCREF(result);
10190
+ Py_INCREF_IMMORTAL(result);
10191
10191
  return result;
10192
10192
  }
10193
10193
 
@@ -10227,7 +10227,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10227
10227
  return result;
10228
10228
  }
10229
10229
 
10230
- Py_DECREF(result);
10230
+ Py_DECREF_IMMORTAL(result);
10231
10231
  }
10232
10232
 
10233
10233
  // No rich comparison worked, but maybe compare works.
@@ -10268,7 +10268,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10268
10268
 
10269
10269
  bool r = c != 0;
10270
10270
  PyObject *result = BOOL_FROM(r);
10271
- Py_INCREF(result);
10271
+ Py_INCREF_IMMORTAL(result);
10272
10272
  return result;
10273
10273
  }
10274
10274
  }
@@ -10288,7 +10288,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10288
10288
  return result;
10289
10289
  }
10290
10290
 
10291
- Py_DECREF(result);
10291
+ Py_DECREF_IMMORTAL(result);
10292
10292
  }
10293
10293
  }
10294
10294
 
@@ -10302,7 +10302,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10302
10302
  return result;
10303
10303
  }
10304
10304
 
10305
- Py_DECREF(result);
10305
+ Py_DECREF_IMMORTAL(result);
10306
10306
  }
10307
10307
 
10308
10308
  f = PyList_Type.tp_richcompare;
@@ -10315,7 +10315,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10315
10315
  return result;
10316
10316
  }
10317
10317
 
10318
- Py_DECREF(result);
10318
+ Py_DECREF_IMMORTAL(result);
10319
10319
  }
10320
10320
 
10321
10321
  int c;
@@ -10403,7 +10403,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10403
10403
 
10404
10404
  bool r = c != 0;
10405
10405
  PyObject *result = BOOL_FROM(r);
10406
- Py_INCREF(result);
10406
+ Py_INCREF_IMMORTAL(result);
10407
10407
  return result;
10408
10408
  #else
10409
10409
  bool checked_reverse_op = false;
@@ -10423,7 +10423,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10423
10423
  return result;
10424
10424
  }
10425
10425
 
10426
- Py_DECREF(result);
10426
+ Py_DECREF_IMMORTAL(result);
10427
10427
  }
10428
10428
  }
10429
10429
 
@@ -10438,7 +10438,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10438
10438
  return result;
10439
10439
  }
10440
10440
 
10441
- Py_DECREF(result);
10441
+ Py_DECREF_IMMORTAL(result);
10442
10442
  }
10443
10443
 
10444
10444
  if (checked_reverse_op == false) {
@@ -10453,7 +10453,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10453
10453
  return result;
10454
10454
  }
10455
10455
 
10456
- Py_DECREF(result);
10456
+ Py_DECREF_IMMORTAL(result);
10457
10457
  }
10458
10458
  }
10459
10459
 
@@ -10465,13 +10465,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_OBJECT_LIST(PyObject *operand1, PyObject *opera
10465
10465
  case Py_EQ: {
10466
10466
  bool r = operand1 == operand2;
10467
10467
  PyObject *result = BOOL_FROM(r);
10468
- Py_INCREF(result);
10468
+ Py_INCREF_IMMORTAL(result);
10469
10469
  return result;
10470
10470
  }
10471
10471
  case Py_NE: {
10472
10472
  bool r = operand1 != operand2;
10473
10473
  PyObject *result = BOOL_FROM(r);
10474
- Py_INCREF(result);
10474
+ Py_INCREF_IMMORTAL(result);
10475
10475
  return result;
10476
10476
  }
10477
10477
  default:
@@ -10519,7 +10519,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10519
10519
  return result;
10520
10520
  }
10521
10521
 
10522
- Py_DECREF(result);
10522
+ Py_DECREF_IMMORTAL(result);
10523
10523
  }
10524
10524
 
10525
10525
  // No rich comparison worked, but maybe compare works.
@@ -10560,7 +10560,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10560
10560
 
10561
10561
  bool r = c != 0;
10562
10562
  PyObject *result = BOOL_FROM(r);
10563
- Py_INCREF(result);
10563
+ Py_INCREF_IMMORTAL(result);
10564
10564
  return result;
10565
10565
  }
10566
10566
  }
@@ -10580,7 +10580,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10580
10580
  return result;
10581
10581
  }
10582
10582
 
10583
- Py_DECREF(result);
10583
+ Py_DECREF_IMMORTAL(result);
10584
10584
  }
10585
10585
  }
10586
10586
 
@@ -10594,7 +10594,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10594
10594
  return result;
10595
10595
  }
10596
10596
 
10597
- Py_DECREF(result);
10597
+ Py_DECREF_IMMORTAL(result);
10598
10598
  }
10599
10599
 
10600
10600
  f = RICHCOMPARE(type2);
@@ -10607,7 +10607,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10607
10607
  return result;
10608
10608
  }
10609
10609
 
10610
- Py_DECREF(result);
10610
+ Py_DECREF_IMMORTAL(result);
10611
10611
  }
10612
10612
 
10613
10613
  int c;
@@ -10695,7 +10695,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10695
10695
 
10696
10696
  bool r = c != 0;
10697
10697
  PyObject *result = BOOL_FROM(r);
10698
- Py_INCREF(result);
10698
+ Py_INCREF_IMMORTAL(result);
10699
10699
  return result;
10700
10700
  #else
10701
10701
  bool checked_reverse_op = false;
@@ -10715,7 +10715,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10715
10715
  return result;
10716
10716
  }
10717
10717
 
10718
- Py_DECREF(result);
10718
+ Py_DECREF_IMMORTAL(result);
10719
10719
  }
10720
10720
  }
10721
10721
 
@@ -10730,7 +10730,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10730
10730
  return result;
10731
10731
  }
10732
10732
 
10733
- Py_DECREF(result);
10733
+ Py_DECREF_IMMORTAL(result);
10734
10734
  }
10735
10735
 
10736
10736
  if (checked_reverse_op == false) {
@@ -10745,7 +10745,7 @@ PyObject *RICH_COMPARE_GT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10745
10745
  return result;
10746
10746
  }
10747
10747
 
10748
- Py_DECREF(result);
10748
+ Py_DECREF_IMMORTAL(result);
10749
10749
  }
10750
10750
  }
10751
10751
 
@@ -10757,13 +10757,13 @@ PyObject *RICH_COMPARE_GT_OBJECT_LIST_OBJECT(PyObject *operand1, PyObject *opera
10757
10757
  case Py_EQ: {
10758
10758
  bool r = operand1 == operand2;
10759
10759
  PyObject *result = BOOL_FROM(r);
10760
- Py_INCREF(result);
10760
+ Py_INCREF_IMMORTAL(result);
10761
10761
  return result;
10762
10762
  }
10763
10763
  case Py_NE: {
10764
10764
  bool r = operand1 != operand2;
10765
10765
  PyObject *result = BOOL_FROM(r);
10766
- Py_INCREF(result);
10766
+ Py_INCREF_IMMORTAL(result);
10767
10767
  return result;
10768
10768
  }
10769
10769
  default:
@@ -10873,7 +10873,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
10873
10873
  }
10874
10874
  }
10875
10875
 
10876
- Py_DECREF(result);
10876
+ Py_DECREF_IMMORTAL(result);
10877
10877
  }
10878
10878
 
10879
10879
  // No rich comparison worked, but maybe compare works.
@@ -10942,7 +10942,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
10942
10942
  }
10943
10943
  }
10944
10944
 
10945
- Py_DECREF(result);
10945
+ Py_DECREF_IMMORTAL(result);
10946
10946
  }
10947
10947
  }
10948
10948
 
@@ -10964,7 +10964,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
10964
10964
  }
10965
10965
  }
10966
10966
 
10967
- Py_DECREF(result);
10967
+ Py_DECREF_IMMORTAL(result);
10968
10968
  }
10969
10969
 
10970
10970
  f = PyList_Type.tp_richcompare;
@@ -10985,7 +10985,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
10985
10985
  }
10986
10986
  }
10987
10987
 
10988
- Py_DECREF(result);
10988
+ Py_DECREF_IMMORTAL(result);
10989
10989
  }
10990
10990
 
10991
10991
  int c;
@@ -11101,7 +11101,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11101
11101
  }
11102
11102
  }
11103
11103
 
11104
- Py_DECREF(result);
11104
+ Py_DECREF_IMMORTAL(result);
11105
11105
  }
11106
11106
  }
11107
11107
 
@@ -11124,7 +11124,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11124
11124
  }
11125
11125
  }
11126
11126
 
11127
- Py_DECREF(result);
11127
+ Py_DECREF_IMMORTAL(result);
11128
11128
  }
11129
11129
 
11130
11130
  if (checked_reverse_op == false) {
@@ -11147,7 +11147,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_OBJECT_LIST(PyObject *operand1, PyObject *oper
11147
11147
  }
11148
11148
  }
11149
11149
 
11150
- Py_DECREF(result);
11150
+ Py_DECREF_IMMORTAL(result);
11151
11151
  }
11152
11152
  }
11153
11153
 
@@ -11221,7 +11221,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11221
11221
  }
11222
11222
  }
11223
11223
 
11224
- Py_DECREF(result);
11224
+ Py_DECREF_IMMORTAL(result);
11225
11225
  }
11226
11226
 
11227
11227
  // No rich comparison worked, but maybe compare works.
@@ -11290,7 +11290,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11290
11290
  }
11291
11291
  }
11292
11292
 
11293
- Py_DECREF(result);
11293
+ Py_DECREF_IMMORTAL(result);
11294
11294
  }
11295
11295
  }
11296
11296
 
@@ -11312,7 +11312,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11312
11312
  }
11313
11313
  }
11314
11314
 
11315
- Py_DECREF(result);
11315
+ Py_DECREF_IMMORTAL(result);
11316
11316
  }
11317
11317
 
11318
11318
  f = RICHCOMPARE(type2);
@@ -11333,7 +11333,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11333
11333
  }
11334
11334
  }
11335
11335
 
11336
- Py_DECREF(result);
11336
+ Py_DECREF_IMMORTAL(result);
11337
11337
  }
11338
11338
 
11339
11339
  int c;
@@ -11449,7 +11449,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11449
11449
  }
11450
11450
  }
11451
11451
 
11452
- Py_DECREF(result);
11452
+ Py_DECREF_IMMORTAL(result);
11453
11453
  }
11454
11454
  }
11455
11455
 
@@ -11472,7 +11472,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11472
11472
  }
11473
11473
  }
11474
11474
 
11475
- Py_DECREF(result);
11475
+ Py_DECREF_IMMORTAL(result);
11476
11476
  }
11477
11477
 
11478
11478
  if (checked_reverse_op == false) {
@@ -11495,7 +11495,7 @@ nuitka_bool RICH_COMPARE_GT_NBOOL_LIST_OBJECT(PyObject *operand1, PyObject *oper
11495
11495
  }
11496
11496
  }
11497
11497
 
11498
- Py_DECREF(result);
11498
+ Py_DECREF_IMMORTAL(result);
11499
11499
  }
11500
11500
  }
11501
11501
 
@@ -11587,7 +11587,7 @@ static PyObject *COMPARE_GT_OBJECT_LONG_CLONG(PyObject *operand1, long operand2)
11587
11587
 
11588
11588
  // Convert to target type.
11589
11589
  PyObject *result = BOOL_FROM(r);
11590
- Py_INCREF(result);
11590
+ Py_INCREF_IMMORTAL(result);
11591
11591
  return result;
11592
11592
  }
11593
11593
  /* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "INT" to Python2 'int'. */
@@ -11673,7 +11673,7 @@ static PyObject *COMPARE_GT_OBJECT_INT_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 "INT" corresponds to Python2 'int' and "CLONG" to C platform long value. */
@@ -11735,7 +11735,7 @@ static PyObject *COMPARE_GT_OBJECT_LONG_DIGIT(PyObject *operand1, long operand2)
11735
11735
 
11736
11736
  // Convert to target type.
11737
11737
  PyObject *result = BOOL_FROM(r);
11738
- Py_INCREF(result);
11738
+ Py_INCREF_IMMORTAL(result);
11739
11739
  return result;
11740
11740
  }
11741
11741
  /* Code referring to "LONG" corresponds to Python2 'long', Python3 'int' and "DIGIT" to C platform digit value for long
@@ -11796,7 +11796,7 @@ static PyObject *COMPARE_GT_OBJECT_FLOAT_CFLOAT(PyObject *operand1, double opera
11796
11796
 
11797
11797
  // Convert to target type.
11798
11798
  PyObject *result = BOOL_FROM(r);
11799
- Py_INCREF(result);
11799
+ Py_INCREF_IMMORTAL(result);
11800
11800
  return result;
11801
11801
  }
11802
11802
  /* Code referring to "FLOAT" corresponds to Python 'float' and "CFLOAT" to C platform float value. */