# HG changeset patch
# User ZyX <[email protected]>
# Date 1369564686 -14400
# Node ID 44b8f018c4fc76aaeedd9424fc987ce31593fafb
# Parent  1ea9c3409a13d2cf25faffc8ae0b832a112dad0c
Check for errors in a number of places, change some exception messages

diff -r 1ea9c3409a13 -r 44b8f018c4fc src/if_py_both.h
--- a/src/if_py_both.h  Sun May 26 12:52:48 2013 +0400
+++ b/src/if_py_both.h  Sun May 26 14:38:06 2013 +0400
@@ -3305,10 +3305,10 @@
 
        for (i = 0; i < new_len; ++i)
        {
-           PyObject *line = PyList_GetItem(list, i);
-
-           array[i] = StringToLine(line);
-           if (array[i] == NULL)
+           PyObject *line;
+
+           if (!(line = PyList_GetItem(list, i)) ||
+               !(array[i] = StringToLine(line)))
            {
                while (i)
                    vim_free(array[--i]);
@@ -3320,7 +3320,7 @@
        VimTryStart();
        PyErr_Clear();
 
-       // START of region without "return".  Must call restore_buffer()!
+       /* START of region without "return".  Must call restore_buffer()! */
        switch_buffer(&savebuf, buf);
 
        if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL)
@@ -3401,7 +3401,7 @@
        if (buf == savebuf)
            py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra);
 
-       // END of region without "return".
+       /* END of region without "return". */
        restore_buffer(savebuf);
 
        if (VimTryEnd())
@@ -3480,10 +3480,10 @@
 
        for (i = 0; i < size; ++i)
        {
-           PyObject *line = PyList_GetItem(lines, i);
-           array[i] = StringToLine(line);
-
-           if (array[i] == NULL)
+           PyObject *line;
+
+           if (!(line = PyList_GetItem(lines, i)) ||
+               !(array[i] = StringToLine(line)))
            {
                while (i)
                    vim_free(array[--i]);
@@ -4015,8 +4015,15 @@
 
     if (!PyArg_ParseTuple(args, "s", &pmark))
        return NULL;
+
+    if (STRLEN(pmark) != 1)
+    {
+       PyErr_SetString(PyExc_ValueError,
+               _("mark name must be a single character"));
+       return NULL;
+    }
+
     mark = *pmark;
-
     VimTryStart();
     switch_buffer(&savebuf, self->buf);
     posp = getmark(mark, FALSE);
@@ -4259,7 +4266,7 @@
 
        if (value->ob_type != &BufferType)
        {
-           PyErr_SetString(PyExc_TypeError, _("expected vim.buffer object"));
+           PyErr_SetString(PyExc_TypeError, _("expected vim.Buffer object"));
            return -1;
        }
 
@@ -4284,7 +4291,7 @@
 
        if (value->ob_type != &WindowType)
        {
-           PyErr_SetString(PyExc_TypeError, _("expected vim.window object"));
+           PyErr_SetString(PyExc_TypeError, _("expected vim.Window object"));
            return -1;
        }
 
@@ -4316,7 +4323,7 @@
     {
        if (value->ob_type != &TabPageType)
        {
-           PyErr_SetString(PyExc_TypeError, _("expected vim.tabpage object"));
+           PyErr_SetString(PyExc_TypeError, _("expected vim.TabPage object"));
            return -1;
        }
 

-- 
-- 
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.


*** /tmp/extdiff.YcvmMt/vim.1ea9c3409a13/src/if_py_both.h	2013-05-26 16:24:22.285907825 +0400
--- vim.44b8f018c4fc/src/if_py_both.h	2013-05-26 16:24:22.291907746 +0400
***************
*** 3305,3314 ****
  
  	for (i = 0; i < new_len; ++i)
  	{
! 	    PyObject *line = PyList_GetItem(list, i);
  
! 	    array[i] = StringToLine(line);
! 	    if (array[i] == NULL)
  	    {
  		while (i)
  		    vim_free(array[--i]);
--- 3305,3314 ----
  
  	for (i = 0; i < new_len; ++i)
  	{
! 	    PyObject *line;
  
! 	    if (!(line = PyList_GetItem(list, i)) ||
! 		!(array[i] = StringToLine(line)))
  	    {
  		while (i)
  		    vim_free(array[--i]);
***************
*** 3320,3326 ****
  	VimTryStart();
  	PyErr_Clear();
  
! 	// START of region without "return".  Must call restore_buffer()!
  	switch_buffer(&savebuf, buf);
  
  	if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL)
--- 3320,3326 ----
  	VimTryStart();
  	PyErr_Clear();
  
! 	/* START of region without "return".  Must call restore_buffer()! */
  	switch_buffer(&savebuf, buf);
  
  	if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL)
***************
*** 3401,3407 ****
  	if (buf == savebuf)
  	    py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra);
  
! 	// END of region without "return".
  	restore_buffer(savebuf);
  
  	if (VimTryEnd())
--- 3401,3407 ----
  	if (buf == savebuf)
  	    py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra);
  
! 	/* END of region without "return". */
  	restore_buffer(savebuf);
  
  	if (VimTryEnd())
***************
*** 3480,3489 ****
  
  	for (i = 0; i < size; ++i)
  	{
! 	    PyObject *line = PyList_GetItem(lines, i);
! 	    array[i] = StringToLine(line);
  
! 	    if (array[i] == NULL)
  	    {
  		while (i)
  		    vim_free(array[--i]);
--- 3480,3489 ----
  
  	for (i = 0; i < size; ++i)
  	{
! 	    PyObject *line;
  
! 	    if (!(line = PyList_GetItem(lines, i)) ||
! 		!(array[i] = StringToLine(line)))
  	    {
  		while (i)
  		    vim_free(array[--i]);
***************
*** 4015,4022 ****
  
      if (!PyArg_ParseTuple(args, "s", &pmark))
  	return NULL;
-     mark = *pmark;
  
      VimTryStart();
      switch_buffer(&savebuf, self->buf);
      posp = getmark(mark, FALSE);
--- 4015,4029 ----
  
      if (!PyArg_ParseTuple(args, "s", &pmark))
  	return NULL;
  
+     if (STRLEN(pmark) != 1)
+     {
+ 	PyErr_SetString(PyExc_ValueError,
+ 		_("mark name must be a single character"));
+ 	return NULL;
+     }
+ 
+     mark = *pmark;
      VimTryStart();
      switch_buffer(&savebuf, self->buf);
      posp = getmark(mark, FALSE);
***************
*** 4259,4265 ****
  
  	if (value->ob_type != &BufferType)
  	{
! 	    PyErr_SetString(PyExc_TypeError, _("expected vim.buffer object"));
  	    return -1;
  	}
  
--- 4266,4272 ----
  
  	if (value->ob_type != &BufferType)
  	{
! 	    PyErr_SetString(PyExc_TypeError, _("expected vim.Buffer object"));
  	    return -1;
  	}
  
***************
*** 4284,4290 ****
  
  	if (value->ob_type != &WindowType)
  	{
! 	    PyErr_SetString(PyExc_TypeError, _("expected vim.window object"));
  	    return -1;
  	}
  
--- 4291,4297 ----
  
  	if (value->ob_type != &WindowType)
  	{
! 	    PyErr_SetString(PyExc_TypeError, _("expected vim.Window object"));
  	    return -1;
  	}
  
***************
*** 4316,4322 ****
      {
  	if (value->ob_type != &TabPageType)
  	{
! 	    PyErr_SetString(PyExc_TypeError, _("expected vim.tabpage object"));
  	    return -1;
  	}
  
--- 4323,4329 ----
      {
  	if (value->ob_type != &TabPageType)
  	{
! 	    PyErr_SetString(PyExc_TypeError, _("expected vim.TabPage object"));
  	    return -1;
  	}
  

Raspunde prin e-mail lui