소스 검색

* Improve type checking of arguments

tags/v0.99.beta14
Pascal Terjan pterjan 18 년 전
부모
커밋
f3ce2dfd1a
2개의 변경된 파일20개의 추가작업 그리고 6개의 파일을 삭제
  1. +14
    -6
      ruby/cucul-canvas.c
  2. +6
    -0
      ruby/t/tc_canvas.rb

+ 14
- 6
ruby/cucul-canvas.c 파일 보기

@@ -202,13 +202,19 @@ static VALUE blit(int argc, VALUE* argv, VALUE self) {


Check_Type(x, T_FIXNUM); Check_Type(x, T_FIXNUM);
Check_Type(y, T_FIXNUM); Check_Type(y, T_FIXNUM);
//FIXME rather check that class is cCanvas
Check_Type(src, TYPE(self));

if(CLASS_OF(src) != cCanvas)
{
rb_raise(rb_eArgError, "src is not a Cucul::Canvas");
}
Data_Get_Struct(src, cucul_canvas_t, csrc); Data_Get_Struct(src, cucul_canvas_t, csrc);

if(!NIL_P(mask)) if(!NIL_P(mask))
{ {
//FIXME rather check that class is cCanvas
Check_Type(mask, TYPE(self));
if(CLASS_OF(mask) != cCanvas)
{
rb_raise(rb_eArgError, "mask is not a Cucul::Canvas");
}
Data_Get_Struct(mask, cucul_canvas_t, cmask); Data_Get_Struct(mask, cucul_canvas_t, cmask);
} }
else else
@@ -493,8 +499,10 @@ static VALUE render_canvas(VALUE self, VALUE font, VALUE width, VALUE height, VA
cucul_font_t *f; cucul_font_t *f;
VALUE b; VALUE b;


//FIXME rather check that class is cFont
Check_Type(font, TYPE(self));
if(CLASS_OF(font) != cFont)
{
rb_raise(rb_eArgError, "First argument is not a Cucul::Font");
}


buf = malloc(width*height*4); buf = malloc(width*height*4);
if(buf == NULL) if(buf == NULL)


+ 6
- 0
ruby/t/tc_canvas.rb 파일 보기

@@ -50,4 +50,10 @@ class TC_Canvas < Test::Unit::TestCase
f = Cucul::Font.new(Cucul::Font.list[0]) f = Cucul::Font.new(Cucul::Font.list[0])
assert_not_nil(c.render(f, c.width*f.width, c.height*f.height, c.width*f.width*4)) assert_not_nil(c.render(f, c.width*f.width, c.height*f.height, c.width*f.width*4))
end end
def test_fail_render
c = Cucul::Canvas.new(4,4)
assert_raise(ArgumentError) {
c.render(nil, c.width, c.height, c.width*4)
}
end
end end

불러오는 중...
취소
저장