diff options
Diffstat (limited to 'qpid/cpp/bindings/swig_perl_typemaps.i')
-rw-r--r-- | qpid/cpp/bindings/swig_perl_typemaps.i | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/qpid/cpp/bindings/swig_perl_typemaps.i b/qpid/cpp/bindings/swig_perl_typemaps.i index 831576a7d4..02e2d4a6b6 100644 --- a/qpid/cpp/bindings/swig_perl_typemaps.i +++ b/qpid/cpp/bindings/swig_perl_typemaps.i @@ -47,7 +47,9 @@ return qpid::types::Variant((float)SvNV(value)); } else if (SvPOK(value)) { - return qpid::types::Variant(std::string(SvPV_nolen(value))); + STRLEN len; + char *ptr = SvPV(value, len); + return qpid::types::Variant(std::string(ptr, len)); } } return qpid::types::Variant(); @@ -173,7 +175,7 @@ argvi++; } -%typemap (in) uint16_t, uint32_t, uint64_t { +%typemap (in) uint8_t, uint16_t, uint32_t, uint64_t { if (SvIOK($input)) { $1 = ($1_ltype)SvUV($input); } @@ -182,12 +184,12 @@ } } -%typemap (out) uint16_t, uint32_t, uint64_t { +%typemap (out) uint8_t, uint16_t, uint32_t, uint64_t { sv_setuv($result, (UV)$1); argvi++; } -%typemap (in) int32_t, int64_t { +%typemap (in) int8_t, int16_t, int32_t, int64_t { if (SvIOK($input)) { $1 = ($1_ltype)SvIV($input); } @@ -196,7 +198,7 @@ } } -%typemap (out) int32_t, int64_t { +%typemap (out) int8_t, int16_t, int32_t, int64_t { sv_setiv($result, (IV)$1); argvi++; } |