Skip to content

Commit c2bcde8

Browse files
_Py_stackref_set_borrowed_from implementation
1 parent 3458162 commit c2bcde8

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

Python/stackrefs.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,24 @@ void
185185
_Py_stackref_set_borrowed_from(_PyStackRef ref, _PyStackRef borrowed_from, const char *filename, int linenumber)
186186
{
187187
assert(!PyStackRef_IsError(ref));
188+
PyInterpreterState *interp = PyInterpreterState_Get();
189+
190+
TableEntry *entry = _Py_hashtable_get(interp->open_stackrefs_table, (void *)ref.index);
191+
if (entry == NULL) {
192+
_Py_FatalErrorFormat(__func__,
193+
"Invalid StackRef (ref) with ID %" PRIu64 " at %s:%d\n",
194+
ref.index, filename, linenumber);
195+
}
196+
197+
TableEntry *entry_borrowed = _Py_hashtable_get(interp->open_stackrefs_table, (void *)borrowed_from.index);
198+
if (entry_borrowed == NULL) {
199+
_Py_FatalErrorFormat(__func__,
200+
"Invalid StackRef (borrowed_from) with ID %" PRIu64 " at %s:%d\n",
201+
borrowed_from.index, filename, linenumber);
202+
}
203+
204+
entry->borrowed_from = borrowed_from;
205+
entry_borrowed->borrows++;
188206
}
189207

190208
void

0 commit comments

Comments
 (0)