]> granicus.if.org Git - vim/commitdiff
updated for version 7.2-084 v7.2.084
authorBram Moolenaar <Bram@vim.org>
Tue, 13 Jan 2009 17:11:05 +0000 (17:11 +0000)
committerBram Moolenaar <Bram@vim.org>
Tue, 13 Jan 2009 17:11:05 +0000 (17:11 +0000)
src/if_python.c
src/version.c

index 4a148840b95b7da2f158497251b558261a19c02b..9a49dd29f23999955aa055501af4cfb7a743ed6b 100644 (file)
@@ -1151,14 +1151,23 @@ VimToPython(typval_T *our_tv, int depth, PyObject *lookupDict)
 
     /* Check if we run into a recursive loop.  The item must be in lookupDict
      * then and we can use it again. */
-    sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U, (long_u)our_tv);
-    result = PyDict_GetItemString(lookupDict, ptrBuf);
-    if (result != NULL)
-       Py_INCREF(result);
-    else if (our_tv->v_type == VAR_STRING)
+    if ((our_tv->v_type == VAR_LIST && our_tv->vval.v_list != NULL)
+           || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL))
+    {
+       sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U,
+               our_tv->v_type == VAR_LIST ? (long_u)our_tv->vval.v_list
+                                          : (long_u)our_tv->vval.v_dict);
+       result = PyDict_GetItemString(lookupDict, ptrBuf);
+       if (result != NULL)
+       {
+           Py_INCREF(result);
+           return result;
+       }
+    }
+
+    if (our_tv->v_type == VAR_STRING)
     {
        result = Py_BuildValue("s", our_tv->vval.v_string);
-       PyDict_SetItemString(lookupDict, ptrBuf, result);
     }
     else if (our_tv->v_type == VAR_NUMBER)
     {
@@ -1167,7 +1176,6 @@ VimToPython(typval_T *our_tv, int depth, PyObject *lookupDict)
        /* For backwards compatibility numbers are stored as strings. */
        sprintf(buf, "%ld", (long)our_tv->vval.v_number);
        result = Py_BuildValue("s", buf);
-       PyDict_SetItemString(lookupDict, ptrBuf, result);
     }
 # ifdef FEAT_FLOAT
     else if (our_tv->v_type == VAR_FLOAT)
@@ -1176,7 +1184,6 @@ VimToPython(typval_T *our_tv, int depth, PyObject *lookupDict)
 
        sprintf(buf, "%f", our_tv->vval.v_float);
        result = Py_BuildValue("s", buf);
-       PyDict_SetItemString(lookupDict, ptrBuf, result);
     }
 # endif
     else if (our_tv->v_type == VAR_LIST)
@@ -1185,10 +1192,11 @@ VimToPython(typval_T *our_tv, int depth, PyObject *lookupDict)
        listitem_T      *curr;
 
        result = PyList_New(0);
-       PyDict_SetItemString(lookupDict, ptrBuf, result);
 
        if (list != NULL)
        {
+           PyDict_SetItemString(lookupDict, ptrBuf, result);
+
            for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
            {
                newObj = VimToPython(&curr->li_tv, depth + 1, lookupDict);
@@ -1200,7 +1208,6 @@ VimToPython(typval_T *our_tv, int depth, PyObject *lookupDict)
     else if (our_tv->v_type == VAR_DICT)
     {
        result = PyDict_New();
-       PyDict_SetItemString(lookupDict, ptrBuf, result);
 
        if (our_tv->vval.v_dict != NULL)
        {
@@ -1209,6 +1216,8 @@ VimToPython(typval_T *our_tv, int depth, PyObject *lookupDict)
            hashitem_T  *hi;
            dictitem_T  *di;
 
+           PyDict_SetItemString(lookupDict, ptrBuf, result);
+
            for (hi = ht->ht_array; todo > 0; ++hi)
            {
                if (!HASHITEM_EMPTY(hi))
index 8002b84c2f7ee20e64e3ced13a13d341e94f7a82..7171a655f99159c3361beb8df9533662cae1e291 100644 (file)
@@ -676,6 +676,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    84,
 /**/
     83,
 /**/