Skip to content
This repository was archived by the owner on Jul 22, 2023. It is now read-only.

Commit 35cbe55

Browse files
committed
Apply Reference type usage
1 parent 5b2f3d4 commit 35cbe55

File tree

3 files changed

+12
-11
lines changed

3 files changed

+12
-11
lines changed

src/runtime/runtime.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -446,18 +446,18 @@ private static void ClearClrModules()
446446
{
447447
var modules = PyImport_GetModuleDict();
448448
var items = PyDict_Items(modules);
449-
long length = PyList_Size(items);
449+
long length = PyList_Size(items.DangerousGetAddress());
450450
for (long i = 0; i < length; i++)
451451
{
452-
var item = PyList_GetItem(items, i);
453-
var name = PyTuple_GetItem(item, 0);
454-
var module = PyTuple_GetItem(item, 1);
452+
var item = PyList_GetItem(items.DangerousGetAddress(), i);
453+
var name = PyTuple_GetItem(item.DangerousGetAddress(), 0);
454+
var module = PyTuple_GetItem(item.DangerousGetAddress(), 1);
455455
if (ManagedType.IsManagedType(module))
456456
{
457457
PyDict_DelItem(modules, name);
458458
}
459459
}
460-
XDecref(items);
460+
items.Dispose();
461461
}
462462

463463
private static void RemoveClrRootModule()

src/runtime/runtime_data.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -224,22 +224,23 @@ private static void StashPopObjects(RuntimeDataStorage storage)
224224
private static void StashPushModules(RuntimeDataStorage storage)
225225
{
226226
var pyModules = PyImport_GetModuleDict();
227-
var items = PyDict_Items(pyModules);
227+
var itemsRef = PyDict_Items(pyModules);
228+
var items = itemsRef.DangerousGetAddress();
228229
long length = PyList_Size(items);
229230
var modules = new Dictionary<IntPtr, IntPtr>(); ;
230231
for (long i = 0; i < length; i++)
231232
{
232233
var item = PyList_GetItem(items, i);
233-
var name = PyTuple_GetItem(item, 0);
234-
var module = PyTuple_GetItem(item, 1);
234+
var name = PyTuple_GetItem(item.DangerousGetAddress(), 0);
235+
var module = PyTuple_GetItem(item.DangerousGetAddress(), 1);
235236
if (ManagedType.IsManagedType(module))
236237
{
237238
XIncref(name);
238239
XIncref(module);
239240
modules.Add(name, module);
240241
}
241242
}
242-
XDecref(items);
243+
itemsRef.Dispose();
243244
storage.AddValue("modules", modules);
244245
}
245246

src/runtime/runtime_state.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public static IEnumerable<IntPtr> PyGCGetObjects()
152152
for (long i = 0; i < length; i++)
153153
{
154154
var obj = PyList_GetItem(objs, i);
155-
yield return obj;
155+
yield return obj.DangerousGetAddress();
156156
}
157157
XDecref(objs);
158158
XDecref(gc);
@@ -166,7 +166,7 @@ public static IEnumerable<IntPtr> GetModuleNames()
166166
for (int i = 0; i < length; i++)
167167
{
168168
var name = PyList_GetItem(names, i);
169-
yield return name;
169+
yield return name.DangerousGetAddress();
170170
}
171171
}
172172

0 commit comments

Comments
 (0)