/* Test for memory/CPU leak in regcomp.  */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <regex.h>
#include <stdio.h>
#include <stdlib.h>

#define TEST_DATA_LIMIT (32 << 20)

int
main ()
{
#ifdef RLIMIT_DATA
  regex_t re;
  int reerr;

  /* Try to avoid eating all memory if a test leaks.  */
  struct rlimit data_limit;
  if (getrlimit (RLIMIT_DATA, &data_limit) == 0)
    {
      if ((rlim_t) TEST_DATA_LIMIT > data_limit.rlim_max)
	data_limit.rlim_cur = data_limit.rlim_max;
      else if (data_limit.rlim_cur > (rlim_t) TEST_DATA_LIMIT)
	data_limit.rlim_cur = (rlim_t) TEST_DATA_LIMIT;
      if (setrlimit (RLIMIT_DATA, &data_limit) < 0)
	perror ("setrlimit: RLIMIT_DATA");
    }
  else
    perror ("getrlimit: RLIMIT_DATA");

  reerr = regcomp (&re, "^6?3?[25]?5?[14]*[25]*[69]*+[58]*87?4?$",
		   REG_EXTENDED | REG_NOSUB);
  if (reerr != 0)
    {
      char buf[100];
      regerror (reerr, &re, buf, sizeof buf);
      printf ("regerror %s\n", buf);
      return 1;
    }

  return 0;
#else
  return 77;
#endif
}
