Fixed string handling for NULL strings in libspi.
authormarcm <marcm@e2bd861d-eb25-0410-b326-f6ed22b6b98c>
Fri, 5 Oct 2001 15:17:39 +0000 (15:17 +0000)
committermarcm <marcm@e2bd861d-eb25-0410-b326-f6ed22b6b98c>
Fri, 5 Oct 2001 15:17:39 +0000 (15:17 +0000)
Added spi_freeString to free strings returned by C bindings.

git-svn-id: http://svn.gnome.org/svn/at-spi/trunk@69 e2bd861d-eb25-0410-b326-f6ed22b6b98c

15 files changed:
ChangeLog
cspi/spi-util.c
cspi/spi.h
cspi/spi_accessible.c
cspi/spi_action.c
cspi/spi_hyperlink.c
cspi/spi_image.c
cspi/spi_table.c
cspi/spi_text.c
libspi/action.c
libspi/hyperlink.c
libspi/image.c
libspi/table.c
libspi/text.c
po/ChangeLog

index 3b59f81..5416f33 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,8 @@
-<2001-09-30  Bill Haneman <bill.haneman@sun.com>
+<2001-10-05  Marc Mulcahy <marc.mulcahy@sun.com>
+       Fixed string handling for NULL strings in libspi.
+       Added spi_freeString to free strings returned by C bindings.
+
+       <2001-09-30  Bill Haneman <bill.haneman@sun.com>
 
        * libspi/keystrokelistener.h:
        * libspi/keystrokelistener.c:
index e9d736b..6cccb40 100644 (file)
@@ -1,17 +1,6 @@
-#include <string.h>
-#include "spi-util.h"
-
-
-char *
-string_from_corba_string (CORBA_char *string)
+void
+spi_freeString (char *s)
 {
-  char *newstring;
-  int length;
-
-  length = strlen (string);
-  newstring = (char *) malloc (length+1);
-  strcpy (newstring, string);
-  CORBA_free (string);
-  return newstring;
+  CORBA_free (s);
 }
 
index 414ebaf..4570e49 100644 (file)
@@ -1241,4 +1241,7 @@ boolean
 AccessibleValue_setCurrentValue (AccessibleValue *value,
                                  float newValue);
 
+void
+spi_freeString (char *s);
+
 #endif
index e4253f5..6099f44 100644 (file)
@@ -128,8 +128,8 @@ Accessible_unref (Accessible *obj)
 char *
 Accessible_getName (Accessible *obj)
 {
-  return string_from_corba_string (
-         Accessibility_Accessible__get_name (*obj, &ev));
+  return (char *)
+    Accessibility_Accessible__get_name (*obj, &ev);
 }
 
 /**
@@ -144,8 +144,8 @@ Accessible_getName (Accessible *obj)
 char *
 Accessible_getDescription (Accessible *obj)
 {
-  return string_from_corba_string (
-         Accessibility_Accessible__get_description (*obj, &ev));
+  return (char *)
+    Accessibility_Accessible__get_description (*obj, &ev);
 }
 
 /**
index d1e842e..0326028 100644 (file)
@@ -1,5 +1,3 @@
-#include "spi-util.h"
-
 int
 AccessibleAction_ref (
                       AccessibleAction *obj)
@@ -41,22 +39,22 @@ char *
 AccessibleAction_getDescription (AccessibleAction *obj,
                                  long index)
 {
-  return string_from_corba_string (
-                                  Accessibility_Action_getDescription (*obj,
-                                      (CORBA_long) index,
-                                                                       &ev));
+  return (char *)
+    Accessibility_Action_getDescription (*obj,
+                                        (CORBA_long) index,
+                                        &ev);
 }
 
 
 
 char *
 AccessibleAction_getKeyBinding (AccessibleAction *obj,
-                                long index)
+                               long index)
 {
-  return string_from_corba_string (
-                                  Accessibility_Action_getKeyBinding (*obj,
-                                                                      (CORBA_long) index,
-                                                                      &ev));
+  return (char *) 
+    Accessibility_Action_getKeyBinding (*obj,
+       (CORBA_long) index,
+       &ev);
 }
 
 
@@ -65,10 +63,10 @@ char *
 AccessibleAction_getName (AccessibleAction *obj,
                          long index)
 {
-  return string_from_corba_string (
+  return (char *)
                                   Accessibility_Action_getName (*obj,
                                                                 (CORBA_long) index,
-                                                                &ev));
+                                                                &ev);
 }
 
 
index d655b6c..7df6612 100644 (file)
@@ -1,5 +1,3 @@
-#include "spi-util.h"
-
 int
 AccessibleHyperlink_ref (AccessibleHyperlink *obj)
 {
@@ -31,9 +29,9 @@ char *
 AccessibleHyperlink_getURI (AccessibleHyperlink *obj,
                             long i)
 {
-  return string_from_corba_string (
-                                  Accessibility_Hyperlink_getURI (*obj,
-                                                                 (CORBA_long) i, &ev));
+  return (char *)
+    Accessibility_Hyperlink_getURI (*obj,
+                                   (CORBA_long) i, &ev);
 }
 
 
index a4ede04..3076fbb 100644 (file)
@@ -1,6 +1,3 @@
-#include "spi-util.h"
-
-
 int
 AccessibleImage_ref (AccessibleImage *obj)
 {
@@ -22,9 +19,9 @@ AccessibleImage_unref (AccessibleImage *obj)
 char *
 AccessibleImage_getImageDescription (AccessibleImage *obj)
 {
-  return string_from_corba_string (
-                                  Accessibility_Image__get_imageDescription (*obj, &ev));
-}
+  return (char *)
+    Accessibility_Image__get_imageDescription (*obj, &ev);
+    }
 
 
 
index f85ba21..cf96701 100644 (file)
@@ -1,5 +1,3 @@
-#include "spi-util.h"
-
 int
 AccessibleTable_ref (AccessibleTable *obj)
 {
@@ -102,9 +100,9 @@ char *
 AccessibleTable_getRowDescription (AccessibleTable *obj,
                                   long row)
 {
-  return string_from_corba_string (
-                                  Accessibility_Table_getRowDescription (*obj,
-                                                                         (CORBA_long) row, &ev));
+  return (char *)
+    Accessibility_Table_getRowDescription (*obj,
+                                          (CORBA_long) row, &ev);
 }
 
 
@@ -113,9 +111,9 @@ char *
 AccessibleTable_getColumnDescription (AccessibleTable *obj,
                                      long column)
 {
-  return string_from_corba_string (
-                                  Accessibility_Table_getColumnDescription (*obj,
-                                                                            (CORBA_long) column, &ev));
+  return (char *)
+    Accessibility_Table_getColumnDescription (*obj,
+                                             (CORBA_long) column, &ev);
 }
 
 
index 45950ad..000a201 100644 (file)
@@ -1,6 +1,3 @@
-#include "spi-util.h"
-
-
 int
 AccessibleText_ref (AccessibleText *obj)
 {
@@ -33,13 +30,14 @@ AccessibleText_getText (AccessibleText *obj,
                         long startOffset,
                         long endOffset)
 {
-  return string_from_corba_string (
-                                  Accessibility_Text_getText (*obj,
-                                                              (CORBA_long) startOffset, (CORBA_long) endOffset, &ev));
+  return (char *)
+    Accessibility_Text_getText (*obj,
+                               (CORBA_long) startOffset, (CORBA_long) endOffset, &ev);
 }
 
 
 
+
 long
 AccessibleText_getCaretOffset (AccessibleText *obj)
 {
@@ -55,11 +53,11 @@ AccessibleText_getAttributes (AccessibleText *obj,
                                 long *startOffset,
                                 long *endOffset)
 {
-  return string_from_corba_string (
-                                  Accessibility_Text_getAttributes (*obj,
-                                                                       (CORBA_long) offset,
-                                                                       (CORBA_long *) startOffset,
-                                                                       (CORBA_long *) endOffset, &ev));
+  return (char *)
+    Accessibility_Text_getAttributes (*obj,
+                                     (CORBA_long) offset,
+                                     (CORBA_long *) startOffset,
+                                     (CORBA_long *) endOffset, &ev);
 }
 
 
@@ -81,11 +79,11 @@ AccessibleText_getTextBeforeOffset (AccessibleText *obj,
                                     TEXT_BOUNDARY_TYPE type,
                                    long *startOffset, long *endOffset)
 {
-  return string_from_corba_string (
-                                  Accessibility_Text_getTextBeforeOffset (*obj,
-                                                                          (CORBA_long) offset, (Accessibility_TEXT_BOUNDARY_TYPE) type,
-                                                                          (CORBA_long *) startOffset, (CORBA_long *) endOffset,
-                                                                          &ev));
+  return (char *)
+    Accessibility_Text_getTextBeforeOffset (*obj,
+                                           (CORBA_long) offset, (Accessibility_TEXT_BOUNDARY_TYPE) type,
+                                           (CORBA_long *) startOffset, (CORBA_long *) endOffset,
+                                           &ev);
 }
 
 
@@ -96,11 +94,11 @@ AccessibleText_getTextAtOffset (AccessibleText *obj,
                                     TEXT_BOUNDARY_TYPE type,
                                    long *startOffset, long *endOffset)
 {
-  return string_from_corba_string (
-                                  Accessibility_Text_getTextAtOffset (*obj,
-                                                                          (CORBA_long) offset, (Accessibility_TEXT_BOUNDARY_TYPE) type,
-                                                                          (CORBA_long *) startOffset, (CORBA_long *) endOffset,
-                                                                          &ev));
+  return (char *)
+    Accessibility_Text_getTextAtOffset (*obj,
+                                       (CORBA_long) offset, (Accessibility_TEXT_BOUNDARY_TYPE) type,
+                                       (CORBA_long *) startOffset, (CORBA_long *) endOffset,
+                                       &ev);
 }
 
 
@@ -111,11 +109,11 @@ AccessibleText_getTextAfterOffset (AccessibleText *obj,
                                     TEXT_BOUNDARY_TYPE type,
                                    long *startOffset, long *endOffset)
 {
-  return string_from_corba_string (
-                                  Accessibility_Text_getTextAfterOffset (*obj,
-                                                                          (CORBA_long) offset, (Accessibility_TEXT_BOUNDARY_TYPE) type,
-                                                                          (CORBA_long *) startOffset, (CORBA_long *) endOffset,
-                                                                          &ev));
+  return (char *)
+    Accessibility_Text_getTextAfterOffset (*obj,
+                                          (CORBA_long) offset, (Accessibility_TEXT_BOUNDARY_TYPE) type,
+                                          (CORBA_long *) startOffset, (CORBA_long *) endOffset,
+                                          &ev);
 }
 
 
index 13247e1..0027dfb 100644 (file)
@@ -172,7 +172,13 @@ impl_getDescription (PortableServer_Servant servant,
                CORBA_Environment * ev)
 {
   Action *action = ACTION (bonobo_object_from_servant(servant));
-  return CORBA_string_dup (atk_action_get_description (ATK_ACTION(action->atko), (gint) index));
+  CORBA_char *rv;
+  
+  rv = atk_action_get_description (ATK_ACTION(action->atko), (gint) index);
+  if (rv)
+    return CORBA_string_dup (rv);
+  else
+    return CORBA_string_dup ("");
 }
 
 
@@ -182,7 +188,13 @@ impl_getName (PortableServer_Servant servant,
                CORBA_Environment * ev)
 {
   Action *action = ACTION (bonobo_object_from_servant(servant));
-  return CORBA_string_dup (atk_action_get_name (ATK_ACTION(action->atko), (gint) index));
+  CORBA_char *rv;
+  
+  rv = atk_action_get_name (ATK_ACTION(action->atko), (gint) index);
+  if (rv)
+    return CORBA_string_dup (rv);
+  else
+    return CORBA_string_dup ("");
 }
 
 static CORBA_string
@@ -191,5 +203,11 @@ impl_getKeyBinding (PortableServer_Servant servant,
                    CORBA_Environment * ev)
 {
   Action *action = ACTION (bonobo_object_from_servant(servant));
-  return CORBA_string_dup (atk_action_get_keybinding (ATK_ACTION(action->atko), (gint) index));
+  CORBA_char *rv;
+  
+  rv = atk_action_get_keybinding (ATK_ACTION(action->atko), (gint) index);
+  if (rv)
+    return CORBA_string_dup (rv);
+  else
+    return CORBA_string_dup ("");
 }
index 2ff83ec..5d0c72f 100644 (file)
@@ -190,8 +190,13 @@ impl_getURI (PortableServer_Servant _servant,
   gchar *uri;
   CORBA_char *rv;
   uri = atk_hyperlink_get_uri (ATK_HYPERLINK(link->atko), (gint) i);
-  rv = CORBA_string_dup (uri);
-  g_free (uri);
+  if (uri)
+    {
+      rv = CORBA_string_dup (uri);
+      g_free (uri);
+      }
+  else
+    rv = CORBA_string_dup ("");
   return rv;
 } 
 
index a637ad1..f1c9893 100644 (file)
@@ -175,8 +175,13 @@ impl__get_imageDescription (PortableServer_Servant _servant,
                          CORBA_Environment * ev)
 {
   Image *image = IMAGE (bonobo_object_from_servant(_servant));
-  return CORBA_string_dup (
-                          atk_image_get_image_description (ATK_IMAGE(image->atko)));
+  CORBA_char *rv;
+
+  rv = atk_image_get_image_description (ATK_IMAGE(image->atko));
+  if (rv)
+    return CORBA_string_dup (rv);
+  else
+    return CORBA_string_dup ("");
 }
 
 
index 886ef60..593522e 100644 (file)
@@ -233,8 +233,7 @@ impl__get_caption (PortableServer_Servant _servant,
   AtkObject *atk_object;
   Accessibility_Accessible rv;
 
-  atk_object = g_object_new (ATK_TYPE_OBJECT, NULL);
-  atk_object_set_name (atk_object, atk_table_get_caption (ATK_TABLE(table-> atko)));
+  atk_object = atk_table_get_caption (ATK_TABLE(table-> atko));
   rv = bonobo_object_corba_objref (BONOBO_OBJECT(accessible_new(atk_object)));
   return rv;
 }
@@ -339,8 +338,13 @@ impl_getRowDescription (PortableServer_Servant _servant,
                        CORBA_Environment * ev)
 {
   Table *table = TABLE (bonobo_object_from_servant (_servant));
-  return CORBA_string_dup (
-                          atk_table_get_row_description (ATK_TABLE(table->atko), (gint) row));
+  CORBA_char *rv;
+
+  rv = atk_table_get_row_description (ATK_TABLE(table->atko), (gint) row);
+  if (rv)
+    return CORBA_string_dup (rv);
+  else
+    return CORBA_string_dup ("");
 }
 
 
@@ -351,8 +355,13 @@ impl_getColumnDescription (PortableServer_Servant _servant,
                           CORBA_Environment * ev)
 {
   Table *table = TABLE (bonobo_object_from_servant (_servant));
-  return CORBA_string_dup (
-                          atk_table_get_column_description (ATK_TABLE(table->atko), (gint) column));
+  CORBA_char *rv;
+
+  rv = atk_table_get_column_description (ATK_TABLE(table->atko), (gint) column);
+  if (rv)
+    return CORBA_string_dup (rv);
+  else
+    return CORBA_string_dup ("");
 }
 
 
index 872f3d0..afb4a7e 100644 (file)
@@ -241,8 +241,13 @@ impl_getText (PortableServer_Servant _servant,
 
   txt = atk_text_get_text (ATK_TEXT(text->atko),
                       (gint) startOffset, (gint) endOffset);
-  rv = CORBA_string_dup (txt);
-  g_free (txt);
+  if (txt)
+    {
+      rv = CORBA_string_dup (txt);
+      g_free (txt);
+    }
+  else
+    rv = CORBA_string_dup ("");
   return rv;
 }
 
@@ -261,11 +266,17 @@ impl_getTextAfterOffset (PortableServer_Servant _servant,
   gchar *txt;
   CORBA_char *rv;
 
+
   txt = atk_text_get_text_after_offset (ATK_TEXT(text->atko),
                                    (gint) offset, (AtkTextBoundary) type,
                                    (gint *) startOffset, (gint *) endOffset);
-  rv = CORBA_string_dup (txt);
-  g_free (txt);
+  if (txt)
+    {
+      rv = CORBA_string_dup (txt);
+      g_free (txt);
+      }
+  else
+    rv = CORBA_string_dup ("");
   return rv;
 }
 
@@ -286,8 +297,13 @@ impl_getTextAtOffset (PortableServer_Servant _servant,
   txt = atk_text_get_text_at_offset (ATK_TEXT(text->atko),
                                    (gint) offset, (AtkTextBoundary) type,
                                    (gint *) startOffset, (gint *) endOffset);
-  rv = CORBA_string_dup (txt);
-  g_free (txt);
+  if (txt)
+    {
+      rv = CORBA_string_dup (txt);
+      g_free (txt);
+    }
+  else
+    rv = CORBA_string_dup ("");
   return rv;
 }
 
@@ -320,8 +336,14 @@ impl_getTextBeforeOffset (PortableServer_Servant _servant,
   txt = atk_text_get_text_before_offset (ATK_TEXT(text->atko),
                                    (gint) offset, (AtkTextBoundary) type,
                                    (gint *) startOffset, (gint *) endOffset);
-  rv = CORBA_string_dup (txt);
-  g_free (txt);
+  if (txt)
+    {
+      rv = CORBA_string_dup (txt);
+      g_free (txt);
+    }
+  else
+    rv = CORBA_string_dup ("");
+  return rv;
 }
 
 
index 56a1d0b..287d447 100644 (file)
@@ -1,3 +1,43 @@
+2001-10-01  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.38.
+
+2001-10-01  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.38.
+
+2001-09-28  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.38.
+
+2001-09-28  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.38.
+
+2001-09-28  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.38.
+
+2001-09-28  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.38.
+
+2001-09-28  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.38.
+
+2001-09-28  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.38.
+
+2001-09-27  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.38.
+
+2001-09-26  gettextize  <bug-gnu-utils@gnu.org>
+
+       * Makefile.in.in: Upgrade to gettext-0.10.38.
+
 2001-09-11  gettextize  <bug-gnu-utils@gnu.org>
 
        * Makefile.in.in: Upgrade to gettext-0.10.38.