Fixed crash in key events.
authorTilman Sauerbeck <tilman@code-monkey.de>
Thu, 7 Apr 2005 18:27:26 +0000 (18:27 +0000)
committerTilman Sauerbeck <tilman@code-monkey.de>
Thu, 7 Apr 2005 18:27:26 +0000 (18:27 +0000)
src/rb_evas_object_events.c

index dc94a48b5371aa3d2e3629e22eaaf7988abfc722..f5e0c5011fb097031094a2d5d85b2108f7f15968 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: rb_evas_object_events.c 306 2005-03-23 17:29:37Z tilman $
+ * $Id: rb_evas_object_events.c 315 2005-04-07 18:27:26Z tilman $
  *
  * Copyright (C) 2005 Tilman Sauerbeck (tilman at code-monkey de)
  *
@@ -74,6 +74,9 @@
 #define CALLBACK_REGISTER2(name) \
        rb_define_method (cEvasObject, "on_"#name, c_on_##name, 0);
 
+#define TO_STR(s) \
+       (s) ? rb_str_new2 ((s)) : Qnil
+
 static VALUE event_classes, cPos;
 
 static VALUE c_ev_mouse_in_init (VALUE self, VALUE ev)
@@ -191,10 +194,10 @@ static VALUE c_ev_key_down_init (VALUE self, VALUE ev)
 {
        Evas_Event_Key_Down *e = (Evas_Event_Key_Down *) ev;
 
-       rb_iv_set (self, "@keyname", rb_str_new2 (e->keyname));
-       rb_iv_set (self, "@key", rb_str_new2 (e->key));
-       rb_iv_set (self, "@string", rb_str_new2 (e->string));
-       rb_iv_set (self, "@compose", rb_str_new2 (e->compose));
+       rb_iv_set (self, "@keyname", TO_STR (e->keyname));
+       rb_iv_set (self, "@key", TO_STR (e->key));
+       rb_iv_set (self, "@string", TO_STR (e->string));
+       rb_iv_set (self, "@compose", TO_STR (e->compose));
 
        return self;
 }
@@ -203,10 +206,10 @@ static VALUE c_ev_key_up_init (VALUE self, VALUE ev)
 {
        Evas_Event_Key_Up *e = (Evas_Event_Key_Up *) ev;
 
-       rb_iv_set (self, "@keyname", rb_str_new2 (e->keyname));
-       rb_iv_set (self, "@key", rb_str_new2 (e->key));
-       rb_iv_set (self, "@string", rb_str_new2 (e->string));
-       rb_iv_set (self, "@compose", rb_str_new2 (e->compose));
+       rb_iv_set (self, "@keyname", TO_STR (e->keyname));
+       rb_iv_set (self, "@key", TO_STR (e->key));
+       rb_iv_set (self, "@string", TO_STR (e->string));
+       rb_iv_set (self, "@compose", TO_STR (e->compose));
 
        return self;
 }