const char *s, *end = NULL, *begin = NULL;
MAGIC *mg;
STRLEN namelen;
- int utf8flag = SvUTF8(name);
const char* nameptr = SvPV(name, namelen);
+ int utf8flag = SvUTF8(name);
int seen_quote = 0, need_subst = 0;
PPCODE:
if (!SvROK(sub) && SvGMAGICAL(sub))
croak("Not a subroutine reference");
for (s = nameptr; s <= nameptr + namelen; s++) {
- if (*s == ':' && s[-1] == ':') {
+ if (s > nameptr && *s == ':' && s[-1] == ':') {
end = s - 1;
begin = ++s;
if (seen_quote)
need_subst++;
}
- else if (*s && s[-1] == '\'') {
+ else if (s > nameptr && *s != '\0' && s[-1] == '\'') {
end = s - 1;
begin = s;
if (seen_quote++)