Mercurial > cpython-lru_cache-weakref
diff Objects/mappingobject.c @ 3287:e38c09d00806 legacy-trunk
fix free memory reads in dictlookup et al
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Fri, 08 Dec 1995 01:16:31 +0000 |
| parents | 425835b88099 |
| children | fa1480e60ed6 |
line wrap: on
line diff
--- a/Objects/mappingobject.c Thu Dec 07 10:16:45 1995 +0000 +++ b/Objects/mappingobject.c Fri Dec 08 01:16:31 1995 +0000 @@ -761,7 +761,7 @@ /* For backward compatibility with old dictionary interface */ static object *last_name_object; -static char *last_name_char; +static char *last_name_char; /* NULL or == getstringvalue(last_name_object) */ object * getattro(v, name) @@ -797,15 +797,14 @@ object *v; char *key; { - if (key != last_name_char || - strcmp(key, getstringvalue(last_name_object)) != 0) { + if (key != last_name_char) { XDECREF(last_name_object); last_name_object = newstringobject(key); if (last_name_object == NULL) { last_name_char = NULL; return NULL; } - last_name_char = key; + last_name_char = getstringvalue(last_name_object); } return mappinglookup(v, last_name_object); } @@ -816,15 +815,14 @@ char *key; object *item; { - if (key != last_name_char || - strcmp(key, getstringvalue(last_name_object)) != 0) { + if (key != last_name_char) { XDECREF(last_name_object); last_name_object = newstringobject(key); if (last_name_object == NULL) { last_name_char = NULL; return -1; } - last_name_char = key; + last_name_char = getstringvalue(last_name_object); } return mappinginsert(v, last_name_object, item); } @@ -834,15 +832,14 @@ object *v; char *key; { - if (key != last_name_char || - strcmp(key, getstringvalue(last_name_object)) != 0) { + if (key != last_name_char) { XDECREF(last_name_object); last_name_object = newstringobject(key); if (last_name_object == NULL) { last_name_char = NULL; return -1; } - last_name_char = key; + last_name_char = getstringvalue(last_name_object); } return mappingremove(v, last_name_object); }
