From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3078 invoked by alias); 26 May 2009 14:19:13 -0000 Received: (qmail 3017 invoked by uid 48); 26 May 2009 14:18:59 -0000 Date: Tue, 26 May 2009 14:19:00 -0000 Message-ID: <20090526141859.3016.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug fortran/40246] ICE on invalid SOURCE= using NULLIFY In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "kargl at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-05/txt/msg02051.txt.bz2 ------- Comment #2 from kargl at gcc dot gnu dot org 2009-05-26 14:18 ------- (In reply to comment #1) > The following patch to gfc_match_nullify fixes it; however, I think one should > additionally add > > gfc_free_expr (new_st.expr1); > new_st.expr1 = NULL; > gfc_free_expr (new_st.expr2); > new_st.expr2 = NULL; > > to prevent a memory leak. > AFAICT, there is no leak. gfc_free_statement (gfc_code *p) { if (p->expr1) gfc_free_expr (p->expr1); if (p->expr2) gfc_free_expr (p->expr2); gfc_free_expr (gfc_expr *e) { if (e == NULL) return; if (e->con_by_offset) splay_tree_delete (e->con_by_offset); free_expr0 (e); gfc_free (e); } The last gfc_free(e) should prevent a leak. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40246