1a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner/* Test for memory leaks in regcomp. 2a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner Copyright (C) 2003 Free Software Foundation, Inc. 3a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner This file is part of the GNU C Library. 4a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. 5a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 6a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner The GNU C Library is free software; you can redistribute it and/or 7a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner modify it under the terms of the GNU Lesser General Public 8a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner License as published by the Free Software Foundation; either 9a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner version 2.1 of the License, or (at your option) any later version. 10a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 11a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner The GNU C Library is distributed in the hope that it will be useful, 12a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner but WITHOUT ANY WARRANTY; without even the implied warranty of 13a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner Lesser General Public License for more details. 15a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 16a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner You should have received a copy of the GNU Lesser General Public 17a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner License along with the GNU C Library; if not, write to the Free 18a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 02110-1301 USA. */ 20a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 21a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifdef HAVE_CONFIG_H 22a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#include "config.h" 23a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 24a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 25a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifdef HAVE_MCHECK_H 26a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#include <mcheck.h> 27a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 28a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#include <regex.h> 29a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#include <stdio.h> 30a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 31a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turnerint main (void) 32a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner{ 33a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner regex_t re; 34a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner int i; 35a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner int ret = 0; 36a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 37a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#ifdef HAVE_MCHECK_H 38a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner mtrace (); 39a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner#endif 40a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner 41a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner for (i = 0; i < 32; ++i) 42a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner { 43a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner if (regcomp (&re, "X-.+:.+Y=\".*\\.(A|B|C|D|E|F|G|H|I", 44a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner REG_EXTENDED | REG_ICASE) == 0) 45a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner { 46a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner puts ("regcomp unexpectedly succeeded"); 47a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner ret = 1; 48a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner } 49a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner else 50a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner regfree (&re); 51a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner } 52a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner return ret; 53a6dfe5f70959a596290e1591579d26a288a1a2f9David 'Digit' Turner} 54