Back to index

glibc  2.9
Functions
bug-regex7.c File Reference
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <regex.h>

Go to the source code of this file.

Functions

int main (void)

Function Documentation

int main ( void  )

Definition at line 30 of file bug-regex7.c.

{
  struct re_pattern_buffer regex;
  struct re_registers regs;
  const char *s;
  int match, n;
  int result = 0;

  memset (&regex, '\0', sizeof (regex));
  regs.start = regs.end = NULL;
  regs.num_regs = 0;
  s = re_compile_pattern ("a", 1, &regex);
  if (s != NULL)
    {
      puts ("failed to compile pattern \"a\"");
      result = 1;
    }
  else
    {
      match = re_search (&regex, "baobab", 6, 0, 6, &regs);
      n = 1;
      if (match != 1)
       {
         printf ("re_search returned %d, expected 1\n", match);
         result = 1;
       }
      else if (regs.num_regs <= n || regs.start[n] != -1 || regs.end[n] != -1)
       {
         puts ("re_search failed to fill the -1 sentinel");
         result = 1;
       }
    }

  free (regex.buffer);
  memset (&regex, '\0', sizeof (regex));

  s = re_compile_pattern ("\\(\\(\\(a\\)\\)\\)", 13, &regex);
  if (s != NULL)
    {
      puts ("failed to compile pattern /\\(\\(\\(a\\)\\)\\)/");
      result = 1;
    }
  else
    {
      match = re_match (&regex, "apl", 3, 0, &regs);
      n = 4;
      if (match != 1)
       {
         printf ("re_match returned %d, expected 1\n", match);
         result = 1;
       }
      else if (regs.num_regs <= n || regs.start[n] != -1 || regs.end[n] != -1)
       {
         puts ("re_match failed to fill the -1 sentinel");
         result = 1;
       }
    }

  if (result == 0)
    puts (" -> OK");

  return result;
}

Here is the call graph for this function: