diff -bu version-0.9912-eLffkD/vutil/vutil.c~ version-0.9912-eLffkD/vutil/vutil.c --- version-0.9912-eLffkD/vutil/vutil.c~ 2015-01-21 03:39:01.000000000 +0100 +++ version-0.9912-eLffkD/vutil/vutil.c 2015-08-26 14:58:01.000000000 +0200 @@ -18,6 +18,8 @@ #define VERSION_MAX 0x7FFFFFFF /* +=head1 Versioning + =for apidoc prescan_version Validate that a given string can be parsed as a version object, but doesn't @@ -158,6 +160,9 @@ /* found just an integer */ goto version_prescan_finish; } +#ifdef USE_CPERL + else if ( *d == 'c' && !*(d+1)) { goto version_prescan_finish; } +#endif else if ( d == s ) { /* didn't find either integer or period */ BADVERSION(s,errstr,"Invalid version format (non-numeric data)"); @@ -221,6 +226,9 @@ d++; if (!isDIGIT(*d) && (! (!*d || *d == ';' || *d == '{' || *d == '}') )) { +#ifdef USE_CPERL + if ( *d != 'c' ) +#endif /* trailing non-numeric data */ BADVERSION(s,errstr,"Invalid version format (non-numeric data)"); } @@ -395,6 +403,12 @@ s = ++pos; else if ( isDIGIT(*pos) ) s = pos; +#ifdef USE_CPERL + else if ( *pos == 'c' && !*(pos+1) ) { + s = ++pos; + break; + } +#endif else { s = pos; break; @@ -727,6 +741,10 @@ } s = SCAN_VERSION(version, ver, qv); +#ifdef USE_CPERL + if ( *s == 'c' && !*(s+1) ) + return ver; +#endif if ( *s != '\0' ) Perl_ck_warner(aTHX_ packWARN(WARN_MISC), "Version string '%s' contains invalid data; "