Mercurial > vim
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); |