Index: src/orca/default.py
===================================================================
--- src/orca/default.py	(revision 2919)
+++ src/orca/default.py	(working copy)
@@ -4757,7 +4757,8 @@
             unicodeText = displayedText.decode("UTF-8")
             if unicodeText \
                and (len(unicodeText) == 1) \
-               and (unicodeText[0] == self.EMBEDDED_OBJECT_CHARACTER):
+               and (unicodeText[0] == self.EMBEDDED_OBJECT_CHARACTER) \
+               and obj.childCount > 0:
                 try:
                     displayedText = self.getDisplayedText(obj.child(0))
                 except:
Index: src/orca/Gecko.py
===================================================================
--- src/orca/Gecko.py	(revision 2919)
+++ src/orca/Gecko.py	(working copy)
@@ -5812,6 +5812,8 @@
                                      characterOffset,
                                      characterOffset + 1).decode("UTF-8")
             if character == self.EMBEDDED_OBJECT_CHARACTER:
+                if obj.childCount <= 0:
+                    return [obj, -1]
                 try:
                     childIndex = self.getChildIndex(obj, characterOffset)
                     return self.findFirstCaretContext(obj.child(childIndex), 0)
@@ -5871,7 +5873,10 @@
                     if child:
                         return self.findNextCaretInOrder(child,
                                                          -1,
-                                                         includeNonText)
+                                                       includeNonText)
+                else:
+                    return [obj, 0]
+                
         elif obj.childCount and obj.child(0):
             try:
                 return self.findNextCaretInOrder(obj.child(0),
@@ -5945,11 +5950,13 @@
                 if unicodeText[previousOffset] \
                     != self.EMBEDDED_OBJECT_CHARACTER:
                     return [obj, previousOffset]
-                else:
+                elif obj.childCount:
                     return self.findPreviousCaretInOrder(
                         obj.child(self.getChildIndex(obj, previousOffset)),
                         -1,
                         includeNonText)
+                else:
+                    return [None, -1]
         elif obj.childCount and obj.child(obj.childCount - 1):
             try:
                 return self.findPreviousCaretInOrder(
@@ -5981,6 +5988,8 @@
                 index = obj.index - 1
                 if index >= 0:
                     try:
+                        if obj.parent.childCount <= 0:
+                            [None, -1]
                         return self.findPreviousCaretInOrder(
                             obj.parent.child(index),
                             -1,
@@ -6610,6 +6619,8 @@
         text = self.getUnicodeText(obj)
         for offset in range(characterOffset, len(text)):
             if text[offset] == self.EMBEDDED_OBJECT_CHARACTER:
+                if obj.childCount <= 0:
+                    return [[obj, -1, -1]]
                 child = obj.child(self.getChildIndex(obj, offset))
                 if child:
                     contents.extend(self.getObjectContentsAtOffset(child, 0))
