- if (!SvOK(sv1) || !SvOK(ss1) || !SvOK(sv2) || !SvOK(ss2) || !SvOK(sl)) {
- croak(svu_error_invarg);
- }
-
- l = SvUV(sl);
- s1 = SvUV(ss1);
- s2 = SvUV(ss2);
- if (SvTYPE(sv1) < SVt_PV) { SvUPGRADE(sv1, SVt_PV); }
- if (SvTYPE(sv2) < SVt_PV) { SvUPGRADE(sv2, SVt_PV); }
+ l = svu_validate_uv(sl, "length");
+ if (!l)
+ XSRETURN_YES;
+ s1 = svu_validate_uv(ss1, "offset");
+ s2 = svu_validate_uv(ss2, "offset");
+ SvUPGRADE(sv1, SVt_PV);
+ SvUPGRADE(sv2, SVt_PV);