comparison src/if_py_both.h @ 4706:bf917ee1fad2 v7.3.1100

updated for version 7.3.1100 Problem: Python: a few more memory problems. Solution: Add and remove Py_XDECREF(). (ZyX)
author Bram Moolenaar <bram@vim.org>
date Sun, 02 Jun 2013 18:54:21 +0200
parents 542af01979be
children 3534e9b4fa42
comparison
equal deleted inserted replaced
4705:df6e3b069a8d 4706:bf917ee1fad2
1234 return -1; 1234 return -1;
1235 1235
1236 if (*key == NUL) 1236 if (*key == NUL)
1237 { 1237 {
1238 RAISE_NO_EMPTY_KEYS; 1238 RAISE_NO_EMPTY_KEYS;
1239 Py_XDECREF(todecref);
1239 return -1; 1240 return -1;
1240 } 1241 }
1241 1242
1242 di = dict_find(dict, key, -1); 1243 di = dict_find(dict, key, -1);
1243 1244
1252 return -1; 1253 return -1;
1253 } 1254 }
1254 hi = hash_find(&dict->dv_hashtab, di->di_key); 1255 hi = hash_find(&dict->dv_hashtab, di->di_key);
1255 hash_remove(&dict->dv_hashtab, hi); 1256 hash_remove(&dict->dv_hashtab, hi);
1256 dictitem_free(di); 1257 dictitem_free(di);
1258 Py_XDECREF(todecref);
1257 return 0; 1259 return 0;
1258 } 1260 }
1259 1261
1260 if (ConvertFromPyObject(valObject, &tv) == -1) 1262 if (ConvertFromPyObject(valObject, &tv) == -1)
1263 {
1264 Py_XDECREF(todecref);
1261 return -1; 1265 return -1;
1266 }
1262 1267
1263 if (di == NULL) 1268 if (di == NULL)
1264 { 1269 {
1265 if (!(di = dictitem_alloc(key))) 1270 if (!(di = dictitem_alloc(key)))
1266 { 1271 {
2503 { 2508 {
2504 char_u *val; 2509 char_u *val;
2505 PyObject *todecref; 2510 PyObject *todecref;
2506 2511
2507 if ((val = StringToChars(valObject, &todecref))) 2512 if ((val = StringToChars(valObject, &todecref)))
2508 {
2509 r = set_option_value_for(key, 0, val, opt_flags, 2513 r = set_option_value_for(key, 0, val, opt_flags,
2510 self->opt_type, self->from); 2514 self->opt_type, self->from);
2511 Py_XDECREF(todecref);
2512 }
2513 else 2515 else
2514 r = -1; 2516 r = -1;
2515 } 2517 }
2516 2518
2517 Py_XDECREF(todecref); 2519 Py_XDECREF(todecref);