File Coverage

easyxs/easyxs_string.h
Criterion Covered Total %
statement 6 7 85.7
branch 7 10 70.0
condition n/a
subroutine n/a
pod n/a
total 13 17 76.4


line stmt bran cond sub pod time code
1             #ifndef EASYXS_STRING_H
2             #define EASYXS_STRING_H 1
3              
4             #include "init.h"
5              
6 60           static inline char* _easyxs_sv_to_str (pTHX_ SV* sv, U8 is_utf8) {
7 60 50         if (SvROK(sv)) _EASYXS_CROAK_STRINGIFY_REFERENCE(sv);
8              
9 60 100         char *str = is_utf8 ? SvPVutf8_nolen(sv) : SvPVbyte_nolen(sv);
    100          
    50          
10              
11 60           size_t len = strnlen(str, 1 + SvCUR(sv));
12 60 50         if (len != SvCUR(sv)) {
13 0           croak("Cannot convert scalar to C string (NUL byte detected, offset %" UVf ")", (UV) len);
14             }
15              
16 60           return str;
17             }
18              
19             /* ---------------------------------------------------------------------- */
20              
21             #define exs_SvPVbyte_nolen(sv) _easyxs_sv_to_str(aTHX_ sv, 0)
22             #define exs_SvPVutf8_nolen(sv) _easyxs_sv_to_str(aTHX_ sv, 1)
23              
24             #endif