diff --git a/modules/media_wysiwyg/includes/media_wysiwyg.filter.inc b/modules/media_wysiwyg/includes/media_wysiwyg.filter.inc
index 22a7297..957acee 100644
--- a/modules/media_wysiwyg/includes/media_wysiwyg.filter.inc
+++ b/modules/media_wysiwyg/includes/media_wysiwyg.filter.inc
@@ -251,6 +251,20 @@ function media_wysiwyg_filter_field_parser($tag_info) {
         $parsed_field = explode('[', str_replace(']', '', $field_name));
         $ref = &$fields;
 
+        // Certain types of fields, because of differences in markup, end up
+        // here with incomplete arrays. Make a best effort to support as many
+        // types of fields as possible. For now, only step in for situations
+        // where the array only contains 2 elements.
+        if (count($parsed_field) == 2) {
+          $info = field_info_field($parsed_field[0]);
+          if ($info && !empty($info['columns'])) {
+            // First the field value delta. We only support single-value fields.
+            $parsed_field[] = 0;
+            // Next tack on the column for this field.
+            $parsed_field[] = key($info['columns']);
+          }
+        }
+
         // Each key of the field needs to be the child of the previous key.
         foreach ($parsed_field as $key) {
           if (!isset($ref[$key])) {
