From c769218363c724e9373be620a620275c21768ec2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Quelin?= Date: Tue, 15 Jan 2008 15:50:16 +0100 Subject: [PATCH] added sanity checks for get_component() --- XS.xs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/XS.xs b/XS.xs index f98361f..c5df2f4 100644 --- a/XS.xs +++ b/XS.xs @@ -16,6 +16,8 @@ #include "ppport.h" + +/* used for constructor new() */ typedef int intArray; void* intArrayPtr(int num) { SV* mortal; @@ -24,6 +26,7 @@ void* intArrayPtr(int num) { } + MODULE = Language::Befunge::Vector::XS PACKAGE = Language::Befunge::Vector::XS @@ -101,6 +104,7 @@ new_zeroes( class, dimension ) #-- PUBLIC METHODS +#- accessors # # my $dims = $vec->get_dims; @@ -109,7 +113,7 @@ new_zeroes( class, dimension ) # I32 get_dims( self ) - AV* self + AV* self; CODE: RETVAL = av_len(self) + 1; @@ -124,19 +128,19 @@ get_dims( self ) # I32 get_component( self, index ) - AV* self - I32 index + AV* self; + I32 index; INIT: SV** val; CODE: + if ( index < 0 || index > av_len(self) ) + croak( "No such dimension!" ); + val = av_fetch(self, index, 0); RETVAL = SvIV(*val); OUTPUT: RETVAL - - - -- 2.11.4.GIT