about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-02-27 01:37:03 +0000
committerEric Wong <normalperson@yhbt.net>2011-02-27 01:37:03 +0000
commit11846a17eed6350063c753a0d4b684d9c3c695d0 (patch)
treefd607e8f903da47b93e86784a51fa10c3d15b821
parent655136d4e6f3a1d0e643d32e29fc3bb586c6ba83 (diff)
downloadmahoro-11846a17eed6350063c753a0d4b684d9c3c695d0.tar.gz
avoid needless wrapping of the magic_t with struct
No need to allocate anything at all.
-rw-r--r--mahoro.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/mahoro.c b/mahoro.c
index f99346a..385234e 100644
--- a/mahoro.c
+++ b/mahoro.c
@@ -12,20 +12,15 @@
 #  define RSTRING_PTR(s)->ptr
 #endif
 
-struct MagicCookie
-{
-        magic_t cookie;
-};
-
 static VALUE cMahoro;
 static VALUE eMahoroError;
 
 static void
 mahoro_free(ptr)
-        struct MagicCookie *ptr;
+        void *ptr;
 {
-        magic_close(ptr->cookie);
-        xfree(ptr);
+        if (ptr)
+                magic_close((magic_t)ptr);
 }
 
 static VALUE
@@ -42,7 +37,6 @@ mahoro_initialize(argc, argv, self)
 {
         int flags = MAGIC_NONE;
         char *path = 0;
-        struct MagicCookie *ptr;
         magic_t cookie;
         VALUE vpath, vflags;
 
@@ -66,9 +60,7 @@ mahoro_initialize(argc, argv, self)
                                       magic_error(cookie));
         }
 
-        ptr = ALLOC(struct MagicCookie);
-        ptr->cookie = cookie;
-        DATA_PTR(self) = ptr;
+        DATA_PTR(self) = cookie;
 
         return self;
 }
@@ -78,7 +70,7 @@ mahoro_file(self, path)
         VALUE self, path;
 {
         const char *msg;
-        magic_t cookie = ((struct MagicCookie *) DATA_PTR(self))->cookie;
+        magic_t cookie = (magic_t)DATA_PTR(self);
 
         if(!(msg = magic_file(cookie, StringValueCStr(path)))) {
                 rb_raise(eMahoroError, "failed lookup: %s", magic_error(cookie));
@@ -92,7 +84,7 @@ mahoro_buffer(self, input)
         VALUE self, input;
 {
         const char *msg;
-        magic_t cookie = ((struct MagicCookie *) DATA_PTR(self))->cookie;
+        magic_t cookie = (magic_t)DATA_PTR(self);
 
         StringValue(input);
 
@@ -108,7 +100,7 @@ static VALUE
 mahoro_set_flags(self, flags)
         VALUE self, flags;
 {
-        magic_t cookie = ((struct MagicCookie *) DATA_PTR(self))->cookie;
+        magic_t cookie = (magic_t)DATA_PTR(self);
 
         return INT2FIX(magic_setflags(cookie, FIX2INT(flags)));
 }
@@ -120,7 +112,7 @@ mahoro_check(argc, argv, self)
 {
         char *path = 0;
         VALUE vpath;
-        magic_t cookie = ((struct MagicCookie *) DATA_PTR(self))->cookie;
+        magic_t cookie = (magic_t)DATA_PTR(self);
 
         switch(rb_scan_args(argc, argv, "01", &vpath)) {
                 case 1:
@@ -156,7 +148,7 @@ static VALUE
 mahoro_load(self, path)
         VALUE self, path;
 {
-        magic_t cookie = ((struct MagicCookie *) DATA_PTR(self))->cookie;
+        magic_t cookie = (magic_t)DATA_PTR(self);
 
         if(magic_load(cookie, StringValuePtr(path))) {
                 rb_raise(eMahoroError, "failed load: %s", magic_error(cookie));