From d67bd45537856a097d807e2b781fcaf60c68b89f Mon Sep 17 00:00:00 2001
From: Victor Stinner <victor.stinner@gmail.com>
Date: Wed, 6 Nov 2013 22:36:40 +0100
Subject: Issue #19512: Add _PySys_GetObjectId() and _PySys_SetObjectId()
 functions

---
 Python/sysmodule.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

(limited to 'Python/sysmodule.c')

diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index b8cf31d4351..32136e844f4 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -41,6 +41,16 @@ extern const char *PyWin_DLLVersionString;
 #include <langinfo.h>
 #endif
 
+PyObject *
+_PySys_GetObjectId(_Py_Identifier *key)
+{
+    PyThreadState *tstate = PyThreadState_GET();
+    PyObject *sd = tstate->interp->sysdict;
+    if (sd == NULL)
+        return NULL;
+    return _PyDict_GetItemId(sd, key);
+}
+
 PyObject *
 PySys_GetObject(const char *name)
 {
@@ -51,6 +61,21 @@ PySys_GetObject(const char *name)
     return PyDict_GetItemString(sd, name);
 }
 
+int
+_PySys_SetObjectId(_Py_Identifier *key, PyObject *v)
+{
+    PyThreadState *tstate = PyThreadState_GET();
+    PyObject *sd = tstate->interp->sysdict;
+    if (v == NULL) {
+        if (_PyDict_GetItemId(sd, key) == NULL)
+            return 0;
+        else
+            return _PyDict_DelItemId(sd, key);
+    }
+    else
+        return _PyDict_SetItemId(sd, key, v);
+}
+
 int
 PySys_SetObject(const char *name, PyObject *v)
 {
-- 
cgit v1.2.3