<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -138,7 +138,13 @@ namespace rubinius {
 
   Object* NativeMethodEnvironment::get_object(VALUE val) {
     if(CAPI_REFERENCE_P(val)) {
-      return capi::Handle::from(val)-&gt;object();
+      capi::Handle* handle = capi::Handle::from(val);
+      if(!handle-&gt;valid_p()) {
+        std::cerr &lt;&lt; &quot;Invalid handle usage detected!\n&quot;;
+        rubinius::abort();
+      }
+
+      return handle-&gt;object();
       /*
       if(CAPI_GLOBAL_HANDLE_P(handle)) {
         Handles&amp; global_handles = state_-&gt;shared.global_handles();</diff>
      <filename>vm/builtin/nativemethod.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -36,6 +36,7 @@ namespace rubinius {
     }
 
     Handle::~Handle() {
+      invalidate();
     }
   }
 }</diff>
      <filename>vm/capi/handle.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -31,6 +31,7 @@ namespace rubinius {
       Object* object_;
       HandleType type_;
       int references_;
+      unsigned int checksum_;
 
       union {
         RArray* rarray;
@@ -45,12 +46,21 @@ namespace rubinius {
         , object_(obj)
         , type_(cUnknown)
         , references_(0)
+        , checksum_(0xffff)
       {
         as_.rarray = 0;
       }
 
       ~Handle();
 
+      bool valid_p() {
+        return checksum_ == 0xffff;
+      }
+
+      void invalidate() {
+        checksum_ = 0;
+      }
+
       Object* object() {
         return object_;
       }</diff>
      <filename>vm/capi/handle.hpp</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>73824ab4c6cf1fd35e691ca26e6edd1bd8e33d5c</id>
    </parent>
  </parents>
  <author>
    <name>Evan Phoenix</name>
    <login></login>
    <email>ephoenix@engineyard.com</email>
  </author>
  <url>http://github.com/evanphx/rubinius/commit/a09b9b197e662a96f175c851afae3b8ae8130b27</url>
  <id>a09b9b197e662a96f175c851afae3b8ae8130b27</id>
  <committed-date>2009-06-22T11:42:12-07:00</committed-date>
  <authored-date>2009-06-22T11:42:12-07:00</authored-date>
  <message>Add trivial checksuming to capi::Handle to aid in debugging</message>
  <tree>2b2399a77878c45b0944cf196ceaca533ec256df</tree>
  <committer>
    <name>Evan Phoenix</name>
    <login></login>
    <email>ephoenix@engineyard.com</email>
  </committer>
</commit>
