To: vim_dev@googlegroups.com
Subject: Patch 7.3.581
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.3.581
Problem:    Problems compiling with Python.
Solution:   Pick UCS2 or UCS4 function at runtime. (lilydjwg)
Files:	    src/if_python.c


*** ../vim-7.3.580/src/if_python.c	2012-06-29 16:28:23.000000000 +0200
--- src/if_python.c	2012-06-29 19:10:53.000000000 +0200
***************
*** 196,202 ****
  # define PyString_Size dll_PyString_Size
  # define PyString_Type (*dll_PyString_Type)
  # define PyUnicode_Type (*dll_PyUnicode_Type)
! # define PyUnicodeUCS4_AsEncodedString (*dll_PyUnicodeUCS4_AsEncodedString)
  # define PyFloat_AsDouble dll_PyFloat_AsDouble
  # define PyFloat_FromDouble dll_PyFloat_FromDouble
  # define PyFloat_Type (*dll_PyFloat_Type)
--- 196,203 ----
  # define PyString_Size dll_PyString_Size
  # define PyString_Type (*dll_PyString_Type)
  # define PyUnicode_Type (*dll_PyUnicode_Type)
! # undef PyUnicode_AsEncodedString
! # define PyUnicode_AsEncodedString py_PyUnicode_AsEncodedString
  # define PyFloat_AsDouble dll_PyFloat_AsDouble
  # define PyFloat_FromDouble dll_PyFloat_FromDouble
  # define PyFloat_Type (*dll_PyFloat_Type)
***************
*** 290,296 ****
  static PyInt(*dll_PyString_Size)(PyObject *);
  static PyTypeObject* dll_PyString_Type;
  static PyTypeObject* dll_PyUnicode_Type;
! static PyObject *(*PyUnicodeUCS4_AsEncodedString)(PyObject *, char *, char *);
  static double(*dll_PyFloat_AsDouble)(PyObject *);
  static PyObject*(*dll_PyFloat_FromDouble)(double);
  static PyTypeObject* dll_PyFloat_Type;
--- 291,297 ----
  static PyInt(*dll_PyString_Size)(PyObject *);
  static PyTypeObject* dll_PyString_Type;
  static PyTypeObject* dll_PyUnicode_Type;
! static PyObject *(*py_PyUnicode_AsEncodedString)(PyObject *, char *, char *);
  static double(*dll_PyFloat_AsDouble)(PyObject *);
  static PyObject*(*dll_PyFloat_FromDouble)(double);
  static PyTypeObject* dll_PyFloat_Type;
***************
*** 406,412 ****
      {"PyString_Size", (PYTHON_PROC*)&dll_PyString_Size},
      {"PyString_Type", (PYTHON_PROC*)&dll_PyString_Type},
      {"PyUnicode_Type", (PYTHON_PROC*)&dll_PyUnicode_Type},
-     {"PyUnicodeUCS4_AsEncodedString", (PYTHON_PROC*)&dll_PyUnicodeUCS4_AsEncodedString},
      {"PyFloat_Type", (PYTHON_PROC*)&dll_PyFloat_Type},
      {"PyFloat_AsDouble", (PYTHON_PROC*)&dll_PyFloat_AsDouble},
      {"PyFloat_FromDouble", (PYTHON_PROC*)&dll_PyFloat_FromDouble},
--- 407,412 ----
***************
*** 471,476 ****
--- 471,477 ----
  python_runtime_link_init(char *libname, int verbose)
  {
      int i;
+     void *ucs_as_encoded_string;
  
  #if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON3)
      /* Can't have Python and Python3 loaded at the same time.
***************
*** 506,511 ****
--- 507,531 ----
  	    return FAIL;
  	}
      }
+ 
+     /* Load unicode functions separately as only the ucs2 or the ucs4 functions
+      * will be present in the library. */
+     ucs_as_encoded_string = symbol_from_dll(hinstPython,
+ 					     "PyUnicodeUCS2_AsEncodedString");
+     if (ucs_as_encoded_string == NULL)
+ 	ucs_as_encoded_string = symbol_from_dll(hinstPython,
+ 					     "PyUnicodeUCS4_AsEncodedString");
+     if (ucs_as_encoded_string != NULL)
+ 	py_PyUnicode_AsEncodedString = ucs_as_encoded_string;
+     else
+     {
+ 	close_dll(hinstPython);
+ 	hinstPython = 0;
+ 	if (verbose)
+ 	    EMSG2(_(e_loadfunc), "PyUnicode_UCSX_*");
+ 	return FAIL;
+     }
+ 
      return OK;
  }
  
*** ../vim-7.3.580/src/version.c	2012-06-29 17:51:58.000000000 +0200
--- src/version.c	2012-06-29 19:13:47.000000000 +0200
***************
*** 716,717 ****
--- 716,719 ----
  {   /* Add new patch number below this line */
+ /**/
+     581,
  /**/

-- 
ASCII stupid question, get a stupid ANSI.

 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
