String exceptions are long since deprecated.

# HG changeset patch
# User ZyX <[email protected]>
# Date 1367413912 -14400
# Branch python-extended-2
# Node ID 3b5aba648b4a0b20a0787dce993953cb14e7d55c
# Parent  1af3f5a86428608eddca083bb94c574910828bd6
Make vim.error Exception subclass

Requires at least python 1.5, but it is fine since <python-2.2 support was
dropped

diff -r 1af3f5a86428 -r 3b5aba648b4a src/if_python.c
--- a/src/if_python.c   Wed May 01 17:30:57 2013 +0400
+++ b/src/if_python.c   Wed May 01 17:11:52 2013 +0400
@@ -149,6 +149,7 @@
 # define PyMem_Malloc dll_PyMem_Malloc
 # define PyDict_SetItemString dll_PyDict_SetItemString
 # define PyErr_BadArgument dll_PyErr_BadArgument
+# define PyErr_NewException dll_PyErr_NewException
 # define PyErr_Clear dll_PyErr_Clear
 # define PyErr_PrintEx dll_PyErr_PrintEx
 # define PyErr_NoMemory dll_PyErr_NoMemory
@@ -255,6 +256,7 @@
 static void* (*dll_PyMem_Malloc)(size_t);
 static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
 static int(*dll_PyErr_BadArgument)(void);
+static PyObject *(*dll_PyErr_NewException)(char *, PyObject *, PyObject *);
 static void(*dll_PyErr_Clear)(void);
 static void(*dll_PyErr_PrintEx)(int);
 static PyObject*(*dll_PyErr_NoMemory)(void);
@@ -391,6 +393,7 @@
     {"PyMem_Malloc", (PYTHON_PROC*)&dll_PyMem_Malloc},
     {"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString},
     {"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument},
+    {"PyErr_NewException", (PYTHON_PROC*)&dll_PyErr_NewException},
     {"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear},
     {"PyErr_PrintEx", (PYTHON_PROC*)&dll_PyErr_PrintEx},
     {"PyErr_NoMemory", (PYTHON_PROC*)&dll_PyErr_NoMemory},
@@ -1304,7 +1307,7 @@
     mod = Py_InitModule4("vim", VimMethods, (char *)NULL, (PyObject *)NULL, 
PYTHON_API_VERSION);
     dict = PyModule_GetDict(mod);
 
-    VimError = Py_BuildValue("s", "vim.error");
+    VimError = PyErr_NewException("vim.error", NULL, NULL);
 
     PyDict_SetItemString(dict, "error", VimError);
     PyDict_SetItemString(dict, "buffers", (PyObject *)(void *)&TheBufferMap);
diff -r 1af3f5a86428 -r 3b5aba648b4a src/if_python3.c
--- a/src/if_python3.c  Wed May 01 17:30:57 2013 +0400
+++ b/src/if_python3.c  Wed May 01 17:11:52 2013 +0400
@@ -1606,8 +1606,8 @@
        return NULL;
 
     VimError = PyErr_NewException("vim.error", NULL, NULL);
+
     Py_INCREF(VimError);
-
     PyModule_AddObject(mod, "error", VimError);
     Py_INCREF((PyObject *)(void *)&TheBufferMap);
     PyModule_AddObject(mod, "buffers", (PyObject *)(void *)&TheBufferMap);

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


diff -cr vim.1af3f5a86428/src/if_python3.c vim.3b5aba648b4a/src/if_python3.c
*** vim.1af3f5a86428/src/if_python3.c	2013-05-01 19:12:32.083675163 +0400
--- vim.3b5aba648b4a/src/if_python3.c	2013-05-01 19:12:32.089675104 +0400
***************
*** 1606,1613 ****
  	return NULL;
  
      VimError = PyErr_NewException("vim.error", NULL, NULL);
-     Py_INCREF(VimError);
  
      PyModule_AddObject(mod, "error", VimError);
      Py_INCREF((PyObject *)(void *)&TheBufferMap);
      PyModule_AddObject(mod, "buffers", (PyObject *)(void *)&TheBufferMap);
--- 1606,1613 ----
  	return NULL;
  
      VimError = PyErr_NewException("vim.error", NULL, NULL);
  
+     Py_INCREF(VimError);
      PyModule_AddObject(mod, "error", VimError);
      Py_INCREF((PyObject *)(void *)&TheBufferMap);
      PyModule_AddObject(mod, "buffers", (PyObject *)(void *)&TheBufferMap);
diff -cr vim.1af3f5a86428/src/if_python.c vim.3b5aba648b4a/src/if_python.c
*** vim.1af3f5a86428/src/if_python.c	2013-05-01 19:12:32.085675143 +0400
--- vim.3b5aba648b4a/src/if_python.c	2013-05-01 19:12:32.092675074 +0400
***************
*** 149,154 ****
--- 149,155 ----
  # define PyMem_Malloc dll_PyMem_Malloc
  # define PyDict_SetItemString dll_PyDict_SetItemString
  # define PyErr_BadArgument dll_PyErr_BadArgument
+ # define PyErr_NewException dll_PyErr_NewException
  # define PyErr_Clear dll_PyErr_Clear
  # define PyErr_PrintEx dll_PyErr_PrintEx
  # define PyErr_NoMemory dll_PyErr_NoMemory
***************
*** 255,260 ****
--- 256,262 ----
  static void* (*dll_PyMem_Malloc)(size_t);
  static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
  static int(*dll_PyErr_BadArgument)(void);
+ static PyObject *(*dll_PyErr_NewException)(char *, PyObject *, PyObject *);
  static void(*dll_PyErr_Clear)(void);
  static void(*dll_PyErr_PrintEx)(int);
  static PyObject*(*dll_PyErr_NoMemory)(void);
***************
*** 391,396 ****
--- 393,399 ----
      {"PyMem_Malloc", (PYTHON_PROC*)&dll_PyMem_Malloc},
      {"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString},
      {"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument},
+     {"PyErr_NewException", (PYTHON_PROC*)&dll_PyErr_NewException},
      {"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear},
      {"PyErr_PrintEx", (PYTHON_PROC*)&dll_PyErr_PrintEx},
      {"PyErr_NoMemory", (PYTHON_PROC*)&dll_PyErr_NoMemory},
***************
*** 1304,1310 ****
      mod = Py_InitModule4("vim", VimMethods, (char *)NULL, (PyObject *)NULL, PYTHON_API_VERSION);
      dict = PyModule_GetDict(mod);
  
!     VimError = Py_BuildValue("s", "vim.error");
  
      PyDict_SetItemString(dict, "error", VimError);
      PyDict_SetItemString(dict, "buffers", (PyObject *)(void *)&TheBufferMap);
--- 1307,1313 ----
      mod = Py_InitModule4("vim", VimMethods, (char *)NULL, (PyObject *)NULL, PYTHON_API_VERSION);
      dict = PyModule_GetDict(mod);
  
!     VimError = PyErr_NewException("vim.error", NULL, NULL);
  
      PyDict_SetItemString(dict, "error", VimError);
      PyDict_SetItemString(dict, "buffers", (PyObject *)(void *)&TheBufferMap);

Raspunde prin e-mail lui