[Python-Dev] cpython: fix some possible refleaks from PyUnicode_READY error conditions

Antoine Pitrou solipsis at pitrou.net
Mon Jan 2 16:04:58 CET 2012


On Mon, 02 Jan 2012 16:00:50 +0100
benjamin.peterson <python-checkins at python.org> wrote:
> http://hg.python.org/cpython/rev/d5cda62d0f8c
> changeset:   74236:d5cda62d0f8c
> user:        Benjamin Peterson <benjamin at python.org>
> date:        Mon Jan 02 09:00:30 2012 -0600
> summary:
>   fix some possible refleaks from PyUnicode_READY error conditions
> 
> files:
>   Objects/unicodeobject.c |  80 ++++++++++++++++++++--------
>   1 files changed, 56 insertions(+), 24 deletions(-)
> 
> 
> diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
> --- a/Objects/unicodeobject.c
> +++ b/Objects/unicodeobject.c
> @@ -9132,10 +9132,15 @@
>      Py_ssize_t len1, len2;
>  
>      str_obj = PyUnicode_FromObject(str);
> -    if (!str_obj || PyUnicode_READY(str_obj) == -1)
> +    if (!str_obj)
>          return -1;
>      sub_obj = PyUnicode_FromObject(substr);
> -    if (!sub_obj || PyUnicode_READY(sub_obj) == -1) {
> +    if (!sub_obj) {
> +        Py_DECREF(str_obj);
> +        return -1;
> +    }
> +    if (PyUnicode_READY(substr) == -1 || PyUnicode_READY(str_obj) == -1) {

Shouldn't the first one be PyUnicode_READY(sub_obj) ?





More information about the Python-Dev mailing list