components/vim/vim72-patches/7.2.084
changeset 379 c6a17bba1da3
parent 378 f0b61ed1d10d
child 380 e92b3b4a1c66
--- a/components/vim/vim72-patches/7.2.084	Thu Jul 07 19:05:29 2011 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-To: [email protected]
-Subject: Patch 7.2.084
-Fcc: outbox
-From: Bram Moolenaar <[email protected]>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=ISO-8859-1
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 7.2.084
-Problem:    Recursive structures are not handled properly in Python
-	    vim.eval().
-Solution:   Keep track of references in a better way. (Yukihiro Nakadaira)
-Files:	    src/if_python.c
-
-
-*** ../vim-7.2.083/src/if_python.c	Thu Nov 20 11:04:01 2008
---- src/if_python.c	Tue Jan 13 18:08:06 2009
-***************
-*** 1151,1164 ****
-  
-      /* 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)
-      {
-  	result = Py_BuildValue("s", our_tv->vval.v_string);
-- 	PyDict_SetItemString(lookupDict, ptrBuf, result);
-      }
-      else if (our_tv->v_type == VAR_NUMBER)
-      {
---- 1151,1173 ----
-  
-      /* Check if we run into a recursive loop.  The item must be in lookupDict
-       * then and we can use it again. */
-!     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);
-      }
-      else if (our_tv->v_type == VAR_NUMBER)
-      {
-***************
-*** 1167,1173 ****
-  	/* 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,1181 ----
-***************
-*** 1176,1182 ****
-  
-  	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)
---- 1184,1189 ----
-***************
-*** 1185,1194 ****
-  	listitem_T	*curr;
-  
-  	result = PyList_New(0);
-- 	PyDict_SetItemString(lookupDict, ptrBuf, result);
-  
-  	if (list != NULL)
-  	{
-  	    for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
-  	    {
-  		newObj = VimToPython(&curr->li_tv, depth + 1, lookupDict);
---- 1192,1202 ----
-  	listitem_T	*curr;
-  
-  	result = PyList_New(0);
-  
-  	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,1206 ****
-      else if (our_tv->v_type == VAR_DICT)
-      {
-  	result = PyDict_New();
-- 	PyDict_SetItemString(lookupDict, ptrBuf, result);
-  
-  	if (our_tv->vval.v_dict != NULL)
-  	{
---- 1208,1213 ----
-***************
-*** 1209,1214 ****
---- 1216,1223 ----
-  	    hashitem_T	*hi;
-  	    dictitem_T	*di;
-  
-+ 	    PyDict_SetItemString(lookupDict, ptrBuf, result);
-+ 
-  	    for (hi = ht->ht_array; todo > 0; ++hi)
-  	    {
-  		if (!HASHITEM_EMPTY(hi))
-*** ../vim-7.2.083/src/version.c	Tue Jan 13 17:27:18 2009
---- src/version.c	Tue Jan 13 17:54:14 2009
-***************
-*** 678,679 ****
---- 678,681 ----
-  {   /* Add new patch number below this line */
-+ /**/
-+     84,
-  /**/
-
--- 
-Article in the first Free Software Magazine: "Bram Moolenaar studied electrical
-engineering at the Technical University of Delft and graduated in 1985 on a
-multi-processor Unix architecture."
-Response by "dimator": Could the school not afford a proper stage for the
-ceremony?
-
- /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
-///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\        download, build and distribute -- http://www.A-A-P.org        ///
- \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///