Hi,

I got the following syntax errors while building swigutil_py.c in trunk with 
Visual Studio 2008 (VC9).


"C:\usr\src\subversion\trunk\subversion_vcnet.sln" (__MORE__;__SWIG_PYTHON__ 
target) (1) ->
(Libraries\Swig\svn_swig_py target) ->
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1183): 
error C2143: syntax error : missing ';' before 'const'
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1189): 
error C2065: 'propval' : undeclared identifier
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1189): 
error C4022: 'apr_hash_set' : pointer mismatch for actual parameter 4
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1195): 
error C2143: syntax error : missing '{' before '*'
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1197): 
error C2371: 'svn_swig_py_mergeinfo_from_dict' : redefinition; different basic 
types
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1227): 
error C2143: syntax error : missing ';' before 'const'
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1234): 
error C2065: 'ranges' : undeclared identifier
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1241): 
error C2065: 'ranges' : undeclared identifier
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1241): 
error C4022: 'apr_hash_set' : pointer mismatch for actual parameter 4
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1247): 
error C2143: syntax error : missing '{' before '*'
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1249): 
error C2371: 'svn_swig_py_proparray_from_dict' : redefinition; different basic 
types
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1326): 
error C2275: 'svn_string_t' : illegal use of this type as an expression
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1326): 
error C2065: 'propval' : undeclared identifier
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1332): 
error C2065: 'propval' : undeclared identifier
  ..\..\..\subversion\bindings\swig\python\libsvn_swig_py\swigutil_py.c(1332): 
error C4022: 'apr_hash_set' : pointer mismatch for actual parameter 4


It seems that several variable declarations are not at start of block.
The declarations lead the syntax errors with Visual Studio 2008.

After attached patch, the errors go away.

--
Jun Omae <jun6...@gmail.com> (大前 潤)
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
  Move variable declarations at start of block to fix syntax errors with VC9.

Index: subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
===================================================================
--- subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c        
(revision 1876859)
+++ subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c        
(working copy)
@@ -1171,6 +1171,7 @@
       PyObject *key = PyList_GetItem(keys, i);
       PyObject *value = PyDict_GetItem(dict, key);
       const char *propname = make_string_from_ob(key, pool);
+      const char *propval;
       if (!propname)
         {
           if (!PyErr_Occurred())
@@ -1180,7 +1181,7 @@
           Py_DECREF(keys);
           return NULL;
         }
-      const char *propval = make_string_from_ob_maybe_null(value, pool);
+      propval = make_string_from_ob_maybe_null(value, pool);
       if (PyErr_Occurred())
         {
           Py_DECREF(keys);
@@ -1215,6 +1216,7 @@
       PyObject *key = PyList_GetItem(keys, i);
       PyObject *value = PyDict_GetItem(dict, key);
       const char *pathname = make_string_from_ob(key, pool);
+      const svn_rangelist_t *ranges;
       if (!pathname)
         {
           if (!PyErr_Occurred())
@@ -1224,7 +1226,7 @@
           Py_DECREF(keys);
           return NULL;
         }
-      const svn_rangelist_t *ranges = svn_swig_py_seq_to_array(value,
+      ranges = svn_swig_py_seq_to_array(value,
         sizeof(const svn_merge_range_t *),
         svn_swig_py_unwrap_struct_ptr,
         svn_swig_TypeQuery("svn_merge_range_t *"),
@@ -1314,6 +1316,7 @@
       PyObject *key = PyList_GetItem(keys, i);
       PyObject *value = PyDict_GetItem(dict, key);
       const char *propname = make_string_from_ob(key, pool);
+      svn_string_t *propval;
       if (!propname)
         {
           if (!PyErr_Occurred())
@@ -1323,7 +1326,7 @@
           Py_DECREF(keys);
           return NULL;
         }
-      svn_string_t *propval = make_svn_string_from_ob_maybe_null(value, pool);
+      propval = make_svn_string_from_ob_maybe_null(value, pool);
       if (PyErr_Occurred())
         {
           Py_DECREF(keys);

Reply via email to