2003-01-27 Padraig O'Briain <padraig.obriain@sun.com
[platform/core/uifw/at-spi2-atk.git] / cspi / spi_main.c
index 56c731b..5117486 100644 (file)
@@ -126,6 +126,7 @@ cspi_get_live_refs (void)
 CORBA_Environment *
 cspi_ev (void)
 {
+  CORBA_exception_init (&ev);
   return &ev;
 }
 
@@ -243,6 +244,27 @@ cspi_object_return (Accessible *accessible)
     }
 }
 
+Accessible *
+cspi_object_take (CORBA_Object corba_object)
+{
+  Accessible *accessible;
+  accessible = cspi_object_borrow (corba_object);
+
+  cspi_object_ref (accessible);
+  /* 
+   * if the remote object is dead, 
+   * cspi_object_return will throw an exception. 
+   * FIXME: what clears that exception context ever ?
+   */
+  cspi_object_return (accessible);
+  if (cspi_exception ()) 
+    {
+      cspi_object_unref (accessible);
+      accessible = NULL;
+    }
+  return accessible;
+}
+
 void
 cspi_object_ref (Accessible *accessible)
 {