Fix pcre_exec's return type

According to PCRE_EXEC(3) pcre_exec returns int.

The original code uses char but char could be either signed or
unsigned. On armel and sparc this caused segment fault because
the (rc < 0) error checking was optimized out.