-const char pcrs_rcs[] = "$Id: pcrs.c,v 1.14 2001/09/09 21:41:57 oes Exp $";
+const char pcrs_rcs[] = "$Id: pcrs.c,v 1.15 2001/09/20 16:11:06 steudten Exp $";
 
 /*********************************************************************
  *
  *
  * Revisions   :
  *    $Log: pcrs.c,v $
+ *    Revision 1.15  2001/09/20 16:11:06  steudten
+ *
+ *    Add casting for some string functions.
+ *
  *    Revision 1.14  2001/09/09 21:41:57  oes
  *    Fixing yet another silly bug
  *
          case 's': rc |= PCRE_DOTALL; break;
          case 'x': rc |= PCRE_EXTENDED; break;
          case 'U': rc |= PCRE_UNGREEDY; break;
-          case 'T': *flags |= PCRS_TRIVIAL; break;
+         case 'T': *flags |= PCRS_TRIVIAL; break;
          default: break;
       }
    }
 int pcrs_execute(pcrs_job *job, char *subject, size_t subject_length, char **result, size_t *result_length)
 {
    int offsets[3 * PCRS_MAX_SUBMATCHES],
-       offset, i, k,
+       offset,
+       i, k,
        matches_found,
        newsize,
        submatches,
       /* Storage for matches exhausted? -> Extend! */
       if (++i >= max_matches)
       {
-         max_matches *= PCRS_MAX_MATCH_GROW;
+         max_matches = (int) (max_matches * PCRS_MAX_MATCH_GROW);
          if (NULL == (dummy = (pcrs_match *)realloc(matches, max_matches * sizeof(pcrs_match))))
          {
             free(matches);
 
       /* Don't loop on empty matches */
       if (offsets[1] == offset)
-         if (offset < subject_length)
+         /* FIXME: is offset an int or a size_t?  Previous line compares
+          * against int, the next one compares against size_t.
+          */
+         if ((size_t)offset < subject_length)
             offset++;
          else
             break;