From b5db97ac51cf3ec962d7f26c87130c1b5ac747b6 Mon Sep 17 00:00:00 2001 From: Matteo Bruni Date: Thu, 26 Jun 2014 19:52:32 +0200 Subject: [PATCH] wpp: Correctly handle OOM in pop_buffer(). --- libs/wpp/ppl.l | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/libs/wpp/ppl.l b/libs/wpp/ppl.l index 0ce64c223fb..243049a47b2 100644 --- a/libs/wpp/ppl.l +++ b/libs/wpp/ppl.l @@ -1354,19 +1354,20 @@ static bufferstackentry_t *pop_buffer(void) if(ppp) { iep = pp_xmalloc(sizeof(includelogicentry_t)); - if(!iep) - return NULL; - - iep->ppp = ppp; - ppp->iep = iep; - iep->filename = bufferstack[bufferstackidx].include_filename; - iep->prev = NULL; - iep->next = pp_includelogiclist; - if(iep->next) - iep->next->prev = iep; - pp_includelogiclist = iep; - if(pp_status.debug) - fprintf(stderr, "pop_buffer: %s:%d: includelogic added, include_ppp='%s', file='%s'\n", bufferstack[bufferstackidx].filename, bufferstack[bufferstackidx].line_number, pp_incl_state.ppp, iep->filename); + if (iep) + { + iep->ppp = ppp; + ppp->iep = iep; + iep->filename = bufferstack[bufferstackidx].include_filename; + iep->prev = NULL; + iep->next = pp_includelogiclist; + if(iep->next) + iep->next->prev = iep; + pp_includelogiclist = iep; + if(pp_status.debug) + fprintf(stderr, "pop_buffer: %s:%d: includelogic added, include_ppp='%s', file='%s'\n", + bufferstack[bufferstackidx].filename, bufferstack[bufferstackidx].line_number, pp_incl_state.ppp, iep->filename); + } } } free(pp_incl_state.ppp);