# HG changeset patch # User Bryan O'Sullivan # Date 1379359075 25200 # Node ID 3d07b4a2f7438cc54e8771d4db14dd1cd4b69fee # Parent b3c8c6f2b5c146c9d3464058ff40d031a97b371d parsers: correctly handle a failed allocation diff -r b3c8c6f2b5c1 -r 3d07b4a2f743 mercurial/parsers.c --- a/mercurial/parsers.c Mon Sep 16 12:12:37 2013 -0700 +++ b/mercurial/parsers.c Mon Sep 16 12:17:55 2013 -0700 @@ -1212,14 +1212,19 @@ long sp; bitmask *seen; + if (gca == NULL) + return PyErr_NoMemory(); + for (i = 0; i < revcount; i++) { if (revs[i] > maxrev) maxrev = revs[i]; } seen = calloc(sizeof(*seen), maxrev + 1); - if (seen == NULL) + if (seen == NULL) { + Py_DECREF(gca); return PyErr_NoMemory(); + } for (i = 0; i < revcount; i++) seen[revs[i]] = 1ull << i;