rem: want_reg_info ? &regs : (struct re_registers *) 0);
add: want_reg_info ? &regs : 0);
context: regexec (preg, string, nmatch, pmatch, eflags)    const regex_t *preg;    const char *string;    size_t nmatch;    regmatch_t pmatch[];    int eflags;{  int ret;  struct re_registers regs;  regex_t private_preg;  int len = strlen (string);  boolean want_reg_info = !preg->no_sub && nmatch > 0;  private_preg = *preg;  private_preg.not_bol = !!(eflags & REG_NOTBOL);  private_preg.not_eol = !!(eflags & REG_NOTEOL);  /* The user has told us exactly how many registers to return     information about, via `nmatch'.  We have to pass that on to the     matching routines.  */  private_preg.regs_allocated = REGS_FIXED;  if (want_reg_info)    {      regs.num_regs = nmatch;      regs.start = TALLOC (nmatch * 2, regoff_t);      if (regs.start == NULL)        return (int) REG_NOMATCH;      regs.end = regs.start + nmatch;    }  /* Perform the searching operation.  */  ret = re_search (&private_preg, string, len,                   /* start: */ 0, /* range: */ len,                   want_reg_info ? &regs : (struct re_registers *) 0);  /* Copy the register information to the POSIX structure.  */  if (want_reg_info)    {      if (ret >= 0)        {          unsigned r;          for (r = 0; r < nmatch; r++)            {              pmatch[r].rm_so = regs.start[r];              pmatch[r].rm_eo = regs.end[r];            }        }      /* If we needed the temporary register info, free the space now.  */      free (regs.start);    }  /* We want zero return to mean success, unlike `re_search'.  */  return ret >= 0 ? (int) REG_NOERROR : (int) REG_NOMATCH;}