Karsten Hopp 49d57f
To: vim_dev@googlegroups.com
Karsten Hopp 49d57f
Subject: Patch 7.3.1100
Karsten Hopp 49d57f
Fcc: outbox
Karsten Hopp 49d57f
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp 49d57f
Mime-Version: 1.0
Karsten Hopp 49d57f
Content-Type: text/plain; charset=UTF-8
Karsten Hopp 49d57f
Content-Transfer-Encoding: 8bit
Karsten Hopp 49d57f
------------
Karsten Hopp 49d57f
Karsten Hopp 49d57f
Patch 7.3.1100
Karsten Hopp 49d57f
Problem:    Python: a few more memory problems.
Karsten Hopp 49d57f
Solution:   Add and remove Py_XDECREF(). (ZyX)
Karsten Hopp 49d57f
Files:	    src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok,
Karsten Hopp 49d57f
	    src/testdir/test87.in, src/testdir/test87.ok
Karsten Hopp 49d57f
Karsten Hopp 49d57f
Karsten Hopp 49d57f
*** ../vim-7.3.1099/src/if_py_both.h	2013-06-02 18:20:12.000000000 +0200
Karsten Hopp 49d57f
--- src/if_py_both.h	2013-06-02 18:41:12.000000000 +0200
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 1236,1241 ****
Karsten Hopp 49d57f
--- 1236,1242 ----
Karsten Hopp 49d57f
      if (*key == NUL)
Karsten Hopp 49d57f
      {
Karsten Hopp 49d57f
  	RAISE_NO_EMPTY_KEYS;
Karsten Hopp 49d57f
+ 	Py_XDECREF(todecref);
Karsten Hopp 49d57f
  	return -1;
Karsten Hopp 49d57f
      }
Karsten Hopp 49d57f
  
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 1254,1264 ****
Karsten Hopp 49d57f
--- 1255,1269 ----
Karsten Hopp 49d57f
  	hi = hash_find(&dict->dv_hashtab, di->di_key);
Karsten Hopp 49d57f
  	hash_remove(&dict->dv_hashtab, hi);
Karsten Hopp 49d57f
  	dictitem_free(di);
Karsten Hopp 49d57f
+ 	Py_XDECREF(todecref);
Karsten Hopp 49d57f
  	return 0;
Karsten Hopp 49d57f
      }
Karsten Hopp 49d57f
  
Karsten Hopp 49d57f
      if (ConvertFromPyObject(valObject, &tv) == -1)
Karsten Hopp 49d57f
+     {
Karsten Hopp 49d57f
+ 	Py_XDECREF(todecref);
Karsten Hopp 49d57f
  	return -1;
Karsten Hopp 49d57f
+     }
Karsten Hopp 49d57f
  
Karsten Hopp 49d57f
      if (di == NULL)
Karsten Hopp 49d57f
      {
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 2505,2515 ****
Karsten Hopp 49d57f
  	PyObject	*todecref;
Karsten Hopp 49d57f
  
Karsten Hopp 49d57f
  	if ((val = StringToChars(valObject, &todecref)))
Karsten Hopp 49d57f
- 	{
Karsten Hopp 49d57f
  	    r = set_option_value_for(key, 0, val, opt_flags,
Karsten Hopp 49d57f
  				    self->opt_type, self->from);
Karsten Hopp 49d57f
- 	    Py_XDECREF(todecref);
Karsten Hopp 49d57f
- 	}
Karsten Hopp 49d57f
  	else
Karsten Hopp 49d57f
  	    r = -1;
Karsten Hopp 49d57f
      }
Karsten Hopp 49d57f
--- 2510,2517 ----
Karsten Hopp 49d57f
*** ../vim-7.3.1099/src/testdir/test86.in	2013-06-02 18:20:12.000000000 +0200
Karsten Hopp 49d57f
--- src/testdir/test86.in	2013-06-02 18:42:24.000000000 +0200
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 867,872 ****
Karsten Hopp 49d57f
--- 867,873 ----
Karsten Hopp 49d57f
      return subexpr_test(expr, 'ConvertFromPyObject', (
Karsten Hopp 49d57f
          'None',                 # Not conversible
Karsten Hopp 49d57f
          '{"": 1}',              # Empty key not allowed
Karsten Hopp 49d57f
+         '{u"": 1}',             # Same, but with unicode object
Karsten Hopp 49d57f
          'FailingMapping()',     #
Karsten Hopp 49d57f
          'FailingMappingKey()',  #
Karsten Hopp 49d57f
      ))
Karsten Hopp 49d57f
*** ../vim-7.3.1099/src/testdir/test86.ok	2013-06-02 18:20:12.000000000 +0200
Karsten Hopp 49d57f
--- src/testdir/test86.ok	2013-06-02 18:44:49.000000000 +0200
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 503,508 ****
Karsten Hopp 49d57f
--- 503,509 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d["a"] = {"abc" : %s}
Karsten Hopp 49d57f
  d["a"] = {"abc" : None}:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  d["a"] = {"abc" : {"": 1}}:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ d["a"] = {"abc" : {u"": 1}}:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d["a"] = {"abc" : FailingMapping()}:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d["a"] = {"abc" : FailingMappingKey()}:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 528,533 ****
Karsten Hopp 49d57f
--- 529,535 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d["a"] = Mapping({"abc" : %s})
Karsten Hopp 49d57f
  d["a"] = Mapping({"abc" : None}):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  d["a"] = Mapping({"abc" : {"": 1}}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ d["a"] = Mapping({"abc" : {u"": 1}}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d["a"] = Mapping({"abc" : FailingMapping()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d["a"] = Mapping({"abc" : FailingMappingKey()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 538,543 ****
Karsten Hopp 49d57f
--- 540,546 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d["a"] = %s
Karsten Hopp 49d57f
  d["a"] = None:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  d["a"] = {"": 1}:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ d["a"] = {u"": 1}:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d["a"] = FailingMapping():(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d["a"] = FailingMappingKey():(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 568,573 ****
Karsten Hopp 49d57f
--- 571,577 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d.update({"abc" : %s})
Karsten Hopp 49d57f
  d.update({"abc" : None}):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  d.update({"abc" : {"": 1}}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ d.update({"abc" : {u"": 1}}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update({"abc" : FailingMapping()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d.update({"abc" : FailingMappingKey()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 593,598 ****
Karsten Hopp 49d57f
--- 597,603 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d.update(Mapping({"abc" : %s}))
Karsten Hopp 49d57f
  d.update(Mapping({"abc" : None})):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  d.update(Mapping({"abc" : {"": 1}})):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ d.update(Mapping({"abc" : {u"": 1}})):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update(Mapping({"abc" : FailingMapping()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d.update(Mapping({"abc" : FailingMappingKey()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 603,608 ****
Karsten Hopp 49d57f
--- 608,614 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d.update(%s)
Karsten Hopp 49d57f
  d.update(None):(<type 'exceptions.TypeError'>, TypeError("'NoneType' object is not iterable",))
Karsten Hopp 49d57f
  d.update({"": 1}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ d.update({u"": 1}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update(FailingMapping()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d.update(FailingMappingKey()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 633,638 ****
Karsten Hopp 49d57f
--- 639,645 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d.update((("a", {"abc" : %s}),))
Karsten Hopp 49d57f
  d.update((("a", {"abc" : None}),)):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  d.update((("a", {"abc" : {"": 1}}),)):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ d.update((("a", {"abc" : {u"": 1}}),)):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update((("a", {"abc" : FailingMapping()}),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d.update((("a", {"abc" : FailingMappingKey()}),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 658,663 ****
Karsten Hopp 49d57f
--- 665,671 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d.update((("a", Mapping({"abc" : %s})),))
Karsten Hopp 49d57f
  d.update((("a", Mapping({"abc" : None})),)):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  d.update((("a", Mapping({"abc" : {"": 1}})),)):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ d.update((("a", Mapping({"abc" : {u"": 1}})),)):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update((("a", Mapping({"abc" : FailingMapping()})),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d.update((("a", Mapping({"abc" : FailingMappingKey()})),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 668,673 ****
Karsten Hopp 49d57f
--- 676,682 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d.update((("a", %s),))
Karsten Hopp 49d57f
  d.update((("a", None),)):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  d.update((("a", {"": 1}),)):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ d.update((("a", {u"": 1}),)):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update((("a", FailingMapping()),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d.update((("a", FailingMappingKey()),)):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 701,706 ****
Karsten Hopp 49d57f
--- 710,716 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using vim.List([{"abc" : %s}])
Karsten Hopp 49d57f
  vim.List([{"abc" : None}]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  vim.List([{"abc" : {"": 1}}]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ vim.List([{"abc" : {u"": 1}}]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  vim.List([{"abc" : FailingMapping()}]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  vim.List([{"abc" : FailingMappingKey()}]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 726,731 ****
Karsten Hopp 49d57f
--- 736,742 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using vim.List([Mapping({"abc" : %s})])
Karsten Hopp 49d57f
  vim.List([Mapping({"abc" : None})]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  vim.List([Mapping({"abc" : {"": 1}})]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ vim.List([Mapping({"abc" : {u"": 1}})]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  vim.List([Mapping({"abc" : FailingMapping()})]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  vim.List([Mapping({"abc" : FailingMappingKey()})]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 736,741 ****
Karsten Hopp 49d57f
--- 747,753 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using vim.List([%s])
Karsten Hopp 49d57f
  vim.List([None]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  vim.List([{"": 1}]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ vim.List([{u"": 1}]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  vim.List([FailingMapping()]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  vim.List([FailingMappingKey()]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 768,773 ****
Karsten Hopp 49d57f
--- 780,786 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using l[:] = [{"abc" : %s}]
Karsten Hopp 49d57f
  l[:] = [{"abc" : None}]:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  l[:] = [{"abc" : {"": 1}}]:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ l[:] = [{"abc" : {u"": 1}}]:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l[:] = [{"abc" : FailingMapping()}]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  l[:] = [{"abc" : FailingMappingKey()}]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 793,798 ****
Karsten Hopp 49d57f
--- 806,812 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using l[:] = [Mapping({"abc" : %s})]
Karsten Hopp 49d57f
  l[:] = [Mapping({"abc" : None})]:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  l[:] = [Mapping({"abc" : {"": 1}})]:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ l[:] = [Mapping({"abc" : {u"": 1}})]:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l[:] = [Mapping({"abc" : FailingMapping()})]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  l[:] = [Mapping({"abc" : FailingMappingKey()})]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 803,808 ****
Karsten Hopp 49d57f
--- 817,823 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using l[:] = [%s]
Karsten Hopp 49d57f
  l[:] = [None]:(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  l[:] = [{"": 1}]:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ l[:] = [{u"": 1}]:(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l[:] = [FailingMapping()]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  l[:] = [FailingMappingKey()]:(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 829,834 ****
Karsten Hopp 49d57f
--- 844,850 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using l.extend([{"abc" : %s}])
Karsten Hopp 49d57f
  l.extend([{"abc" : None}]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  l.extend([{"abc" : {"": 1}}]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ l.extend([{"abc" : {u"": 1}}]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l.extend([{"abc" : FailingMapping()}]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  l.extend([{"abc" : FailingMappingKey()}]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 854,859 ****
Karsten Hopp 49d57f
--- 870,876 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using l.extend([Mapping({"abc" : %s})])
Karsten Hopp 49d57f
  l.extend([Mapping({"abc" : None})]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  l.extend([Mapping({"abc" : {"": 1}})]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ l.extend([Mapping({"abc" : {u"": 1}})]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l.extend([Mapping({"abc" : FailingMapping()})]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  l.extend([Mapping({"abc" : FailingMappingKey()})]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 864,869 ****
Karsten Hopp 49d57f
--- 881,887 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using l.extend([%s])
Karsten Hopp 49d57f
  l.extend([None]):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  l.extend([{"": 1}]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ l.extend([{u"": 1}]):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l.extend([FailingMapping()]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  l.extend([FailingMappingKey()]):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 899,904 ****
Karsten Hopp 49d57f
--- 917,923 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using f({"abc" : %s})
Karsten Hopp 49d57f
  f({"abc" : None}):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  f({"abc" : {"": 1}}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ f({"abc" : {u"": 1}}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  f({"abc" : FailingMapping()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  f({"abc" : FailingMappingKey()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 924,929 ****
Karsten Hopp 49d57f
--- 943,949 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using f(Mapping({"abc" : %s}))
Karsten Hopp 49d57f
  f(Mapping({"abc" : None})):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  f(Mapping({"abc" : {"": 1}})):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ f(Mapping({"abc" : {u"": 1}})):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  f(Mapping({"abc" : FailingMapping()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  f(Mapping({"abc" : FailingMappingKey()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 934,939 ****
Karsten Hopp 49d57f
--- 954,960 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using f(%s)
Karsten Hopp 49d57f
  f(None):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  f({"": 1}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ f({u"": 1}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  f(FailingMapping()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  f(FailingMappingKey()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 959,964 ****
Karsten Hopp 49d57f
--- 980,986 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using fd(self={"abc" : %s})
Karsten Hopp 49d57f
  fd(self={"abc" : None}):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  fd(self={"abc" : {"": 1}}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ fd(self={"abc" : {u"": 1}}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  fd(self={"abc" : FailingMapping()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  fd(self={"abc" : FailingMappingKey()}):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 984,989 ****
Karsten Hopp 49d57f
--- 1006,1012 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using fd(self=Mapping({"abc" : %s}))
Karsten Hopp 49d57f
  fd(self=Mapping({"abc" : None})):(<type 'exceptions.TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
  fd(self=Mapping({"abc" : {"": 1}})):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ fd(self=Mapping({"abc" : {u"": 1}})):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  fd(self=Mapping({"abc" : FailingMapping()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  fd(self=Mapping({"abc" : FailingMappingKey()})):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 994,999 ****
Karsten Hopp 49d57f
--- 1017,1023 ----
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using fd(self=%s)
Karsten Hopp 49d57f
  fd(self=None):(<type 'exceptions.TypeError'>, TypeError('unable to convert object to vim dictionary',))
Karsten Hopp 49d57f
  fd(self={"": 1}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
+ fd(self={u"": 1}):(<type 'exceptions.ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  fd(self=FailingMapping()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  fd(self=FailingMappingKey()):(<type 'exceptions.NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
*** ../vim-7.3.1099/src/testdir/test87.in	2013-06-02 18:20:12.000000000 +0200
Karsten Hopp 49d57f
--- src/testdir/test87.in	2013-06-02 18:44:49.000000000 +0200
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 833,839 ****
Karsten Hopp 49d57f
      iter_test(expr)
Karsten Hopp 49d57f
      return subexpr_test(expr, 'ConvertFromPyObject', (
Karsten Hopp 49d57f
          'None',                 # Not conversible
Karsten Hopp 49d57f
!         '{"": 1}',              # Empty key not allowed
Karsten Hopp 49d57f
          'FailingMapping()',     #
Karsten Hopp 49d57f
          'FailingMappingKey()',  #
Karsten Hopp 49d57f
      ))
Karsten Hopp 49d57f
--- 833,840 ----
Karsten Hopp 49d57f
      iter_test(expr)
Karsten Hopp 49d57f
      return subexpr_test(expr, 'ConvertFromPyObject', (
Karsten Hopp 49d57f
          'None',                 # Not conversible
Karsten Hopp 49d57f
!         '{b"": 1}',             # Empty key not allowed
Karsten Hopp 49d57f
!         '{"": 1}',              # Same, but with unicode object
Karsten Hopp 49d57f
          'FailingMapping()',     #
Karsten Hopp 49d57f
          'FailingMappingKey()',  #
Karsten Hopp 49d57f
      ))
Karsten Hopp 49d57f
*** ../vim-7.3.1099/src/testdir/test87.ok	2013-06-02 18:20:12.000000000 +0200
Karsten Hopp 49d57f
--- src/testdir/test87.ok	2013-06-02 18:44:49.000000000 +0200
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 495,500 ****
Karsten Hopp 49d57f
--- 495,501 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d["a"] = {"abc" : %s}
Karsten Hopp 49d57f
  d["a"] = {"abc" : None}:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ d["a"] = {"abc" : {b"": 1}}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d["a"] = {"abc" : {"": 1}}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d["a"] = {"abc" : FailingMapping()}:(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d["a"] = {"abc" : FailingMappingKey()}:(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 520,525 ****
Karsten Hopp 49d57f
--- 521,527 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d["a"] = Mapping({"abc" : %s})
Karsten Hopp 49d57f
  d["a"] = Mapping({"abc" : None}):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ d["a"] = Mapping({"abc" : {b"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d["a"] = Mapping({"abc" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d["a"] = Mapping({"abc" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d["a"] = Mapping({"abc" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 530,535 ****
Karsten Hopp 49d57f
--- 532,538 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d["a"] = %s
Karsten Hopp 49d57f
  d["a"] = None:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ d["a"] = {b"": 1}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d["a"] = {"": 1}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d["a"] = FailingMapping():(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d["a"] = FailingMappingKey():(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 564,569 ****
Karsten Hopp 49d57f
--- 567,573 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d.update({"abc" : %s})
Karsten Hopp 49d57f
  d.update({"abc" : None}):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ d.update({"abc" : {b"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update({"abc" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update({"abc" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d.update({"abc" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 589,594 ****
Karsten Hopp 49d57f
--- 593,599 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d.update(Mapping({"abc" : %s}))
Karsten Hopp 49d57f
  d.update(Mapping({"abc" : None})):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ d.update(Mapping({"abc" : {b"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update(Mapping({"abc" : {"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update(Mapping({"abc" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d.update(Mapping({"abc" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 599,604 ****
Karsten Hopp 49d57f
--- 604,610 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d.update(%s)
Karsten Hopp 49d57f
  d.update(None):(<class 'TypeError'>, TypeError("'NoneType' object is not iterable",))
Karsten Hopp 49d57f
+ d.update({b"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update({"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d.update(FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 629,634 ****
Karsten Hopp 49d57f
--- 635,641 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d.update((("a", {"abc" : %s}),))
Karsten Hopp 49d57f
  d.update((("a", {"abc" : None}),)):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ d.update((("a", {"abc" : {b"": 1}}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update((("a", {"abc" : {"": 1}}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update((("a", {"abc" : FailingMapping()}),)):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d.update((("a", {"abc" : FailingMappingKey()}),)):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 654,659 ****
Karsten Hopp 49d57f
--- 661,667 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d.update((("a", Mapping({"abc" : %s})),))
Karsten Hopp 49d57f
  d.update((("a", Mapping({"abc" : None})),)):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ d.update((("a", Mapping({"abc" : {b"": 1}})),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update((("a", Mapping({"abc" : {"": 1}})),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update((("a", Mapping({"abc" : FailingMapping()})),)):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d.update((("a", Mapping({"abc" : FailingMappingKey()})),)):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 664,669 ****
Karsten Hopp 49d57f
--- 672,678 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using d.update((("a", %s),))
Karsten Hopp 49d57f
  d.update((("a", None),)):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ d.update((("a", {b"": 1}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update((("a", {"": 1}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  d.update((("a", FailingMapping()),)):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  d.update((("a", FailingMappingKey()),)):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 701,706 ****
Karsten Hopp 49d57f
--- 710,716 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using vim.List([{"abc" : %s}])
Karsten Hopp 49d57f
  vim.List([{"abc" : None}]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ vim.List([{"abc" : {b"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  vim.List([{"abc" : {"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  vim.List([{"abc" : FailingMapping()}]):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  vim.List([{"abc" : FailingMappingKey()}]):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 726,731 ****
Karsten Hopp 49d57f
--- 736,742 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using vim.List([Mapping({"abc" : %s})])
Karsten Hopp 49d57f
  vim.List([Mapping({"abc" : None})]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ vim.List([Mapping({"abc" : {b"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  vim.List([Mapping({"abc" : {"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  vim.List([Mapping({"abc" : FailingMapping()})]):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  vim.List([Mapping({"abc" : FailingMappingKey()})]):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 736,741 ****
Karsten Hopp 49d57f
--- 747,753 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using vim.List([%s])
Karsten Hopp 49d57f
  vim.List([None]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ vim.List([{b"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  vim.List([{"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  vim.List([FailingMapping()]):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  vim.List([FailingMappingKey()]):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 772,777 ****
Karsten Hopp 49d57f
--- 784,790 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using l[:] = [{"abc" : %s}]
Karsten Hopp 49d57f
  l[:] = [{"abc" : None}]:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ l[:] = [{"abc" : {b"": 1}}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l[:] = [{"abc" : {"": 1}}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l[:] = [{"abc" : FailingMapping()}]:(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  l[:] = [{"abc" : FailingMappingKey()}]:(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 797,802 ****
Karsten Hopp 49d57f
--- 810,816 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using l[:] = [Mapping({"abc" : %s})]
Karsten Hopp 49d57f
  l[:] = [Mapping({"abc" : None})]:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ l[:] = [Mapping({"abc" : {b"": 1}})]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l[:] = [Mapping({"abc" : {"": 1}})]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l[:] = [Mapping({"abc" : FailingMapping()})]:(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  l[:] = [Mapping({"abc" : FailingMappingKey()})]:(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 807,812 ****
Karsten Hopp 49d57f
--- 821,827 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using l[:] = [%s]
Karsten Hopp 49d57f
  l[:] = [None]:(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ l[:] = [{b"": 1}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l[:] = [{"": 1}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l[:] = [FailingMapping()]:(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  l[:] = [FailingMappingKey()]:(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 837,842 ****
Karsten Hopp 49d57f
--- 852,858 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using l.extend([{"abc" : %s}])
Karsten Hopp 49d57f
  l.extend([{"abc" : None}]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ l.extend([{"abc" : {b"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l.extend([{"abc" : {"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l.extend([{"abc" : FailingMapping()}]):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  l.extend([{"abc" : FailingMappingKey()}]):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 862,867 ****
Karsten Hopp 49d57f
--- 878,884 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using l.extend([Mapping({"abc" : %s})])
Karsten Hopp 49d57f
  l.extend([Mapping({"abc" : None})]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ l.extend([Mapping({"abc" : {b"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l.extend([Mapping({"abc" : {"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l.extend([Mapping({"abc" : FailingMapping()})]):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  l.extend([Mapping({"abc" : FailingMappingKey()})]):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 872,877 ****
Karsten Hopp 49d57f
--- 889,895 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using l.extend([%s])
Karsten Hopp 49d57f
  l.extend([None]):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ l.extend([{b"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l.extend([{"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  l.extend([FailingMapping()]):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  l.extend([FailingMappingKey()]):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 907,912 ****
Karsten Hopp 49d57f
--- 925,931 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using f({"abc" : %s})
Karsten Hopp 49d57f
  f({"abc" : None}):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ f({"abc" : {b"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  f({"abc" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  f({"abc" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  f({"abc" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 932,937 ****
Karsten Hopp 49d57f
--- 951,957 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using f(Mapping({"abc" : %s}))
Karsten Hopp 49d57f
  f(Mapping({"abc" : None})):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ f(Mapping({"abc" : {b"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  f(Mapping({"abc" : {"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  f(Mapping({"abc" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  f(Mapping({"abc" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 942,947 ****
Karsten Hopp 49d57f
--- 962,968 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using f(%s)
Karsten Hopp 49d57f
  f(None):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ f({b"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  f({"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  f(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  f(FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 967,972 ****
Karsten Hopp 49d57f
--- 988,994 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using fd(self={"abc" : %s})
Karsten Hopp 49d57f
  fd(self={"abc" : None}):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ fd(self={"abc" : {b"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  fd(self={"abc" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  fd(self={"abc" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  fd(self={"abc" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 992,997 ****
Karsten Hopp 49d57f
--- 1014,1020 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using fd(self=Mapping({"abc" : %s}))
Karsten Hopp 49d57f
  fd(self=Mapping({"abc" : None})):(<class 'TypeError'>, TypeError('unable to convert to vim structure',))
Karsten Hopp 49d57f
+ fd(self=Mapping({"abc" : {b"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  fd(self=Mapping({"abc" : {"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  fd(self=Mapping({"abc" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  fd(self=Mapping({"abc" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 1002,1007 ****
Karsten Hopp 49d57f
--- 1025,1031 ----
Karsten Hopp 49d57f
  <<< Finished
Karsten Hopp 49d57f
  >>> Testing ConvertFromPyObject using fd(self=%s)
Karsten Hopp 49d57f
  fd(self=None):(<class 'TypeError'>, TypeError('unable to convert object to vim dictionary',))
Karsten Hopp 49d57f
+ fd(self={b"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  fd(self={"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
Karsten Hopp 49d57f
  fd(self=FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
  fd(self=FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError())
Karsten Hopp 49d57f
*** ../vim-7.3.1099/src/version.c	2013-06-02 18:20:12.000000000 +0200
Karsten Hopp 49d57f
--- src/version.c	2013-06-02 18:53:59.000000000 +0200
Karsten Hopp 49d57f
***************
Karsten Hopp 49d57f
*** 730,731 ****
Karsten Hopp 49d57f
--- 730,733 ----
Karsten Hopp 49d57f
  {   /* Add new patch number below this line */
Karsten Hopp 49d57f
+ /**/
Karsten Hopp 49d57f
+     1100,
Karsten Hopp 49d57f
  /**/
Karsten Hopp 49d57f
Karsten Hopp 49d57f
-- 
Karsten Hopp 49d57f
hundred-and-one symptoms of being an internet addict:
Karsten Hopp 49d57f
48. You get a tatoo that says "This body best viewed with Netscape 3.1 or
Karsten Hopp 49d57f
    higher."
Karsten Hopp 49d57f
Karsten Hopp 49d57f
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp 49d57f
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp 49d57f
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp 49d57f
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///