Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit80f2d56

Browse files
committed
Use PyThreadState_UncheckedGet on Python 3.13
1 parentcb38a90 commit80f2d56

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

‎src/runtime/Runtime.Delegates.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@ static Delegates()
2525
PyThreadState_Get=(delegate* unmanaged[Cdecl]<PyThreadState*>)GetFunctionByName(nameof(PyThreadState_Get),GetUnmanagedDll(_PythonDll));
2626
try
2727
{
28-
_PyThreadState_UncheckedGet=(delegate* unmanaged[Cdecl]<PyThreadState*>)GetFunctionByName(nameof(_PyThreadState_UncheckedGet),GetUnmanagedDll(_PythonDll));
28+
// Up until Python 3.13, this function was private
29+
PyThreadState_UncheckedGet=(delegate* unmanaged[Cdecl]<PyThreadState*>)GetFunctionByName("_PyThreadState_UncheckedGet",GetUnmanagedDll(_PythonDll));
2930
}
3031
catch(MissingMethodException)
3132
{
32-
// Not supported in Python 3.13 anymore
33+
34+
PyThreadState_UncheckedGet=(delegate* unmanaged[Cdecl]<PyThreadState*>)GetFunctionByName(nameof(PyThreadState_UncheckedGet),GetUnmanagedDll(_PythonDll));
3335
}
3436
try
3537
{
@@ -321,7 +323,7 @@ static Delegates()
321323
internalstaticdelegate* unmanaged[Cdecl]<PyThreadState*,void>Py_EndInterpreter{get;}
322324
internalstaticdelegate* unmanaged[Cdecl]<PyInterpreterState*,PyThreadState*>PyThreadState_New{get;}
323325
internalstaticdelegate* unmanaged[Cdecl]<PyThreadState*>PyThreadState_Get{get;}
324-
internalstaticdelegate* unmanaged[Cdecl]<PyThreadState*>_PyThreadState_UncheckedGet{get;}
326+
internalstaticdelegate* unmanaged[Cdecl]<PyThreadState*>PyThreadState_UncheckedGet{get;}
325327
internalstaticdelegate* unmanaged[Cdecl]<int>PyGILState_Check{get;}
326328
internalstaticdelegate* unmanaged[Cdecl]<PyGILState>PyGILState_Ensure{get;}
327329
internalstaticdelegate* unmanaged[Cdecl]<PyGILState,void>PyGILState_Release{get;}

‎src/runtime/Runtime.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ internal static void Shutdown()
316316
// Then release the GIL for good, if there is somehting to release
317317
// Use the unchecked version as the checked version calls `abort()`
318318
// if the current state is NULL.
319-
if(_PyThreadState_UncheckedGet()!=(PyThreadState*)0)
319+
if(PyThreadState_UncheckedGet()!=(PyThreadState*)0)
320320
{
321321
PyEval_SaveThread();
322322
}
@@ -705,7 +705,7 @@ internal static T TryUsingDll<T>(Func<T> op)
705705
internalstaticPyThreadState*PyThreadState_Get()=>Delegates.PyThreadState_Get();
706706

707707

708-
internalstaticPyThreadState*_PyThreadState_UncheckedGet()=>Delegates._PyThreadState_UncheckedGet();
708+
internalstaticPyThreadState*PyThreadState_UncheckedGet()=>Delegates.PyThreadState_UncheckedGet();
709709

710710

711711
internalstaticintPyGILState_Check()=>Delegates.PyGILState_Check();

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp