--- modules/ed_readmore/ed_readmore.module	2009-05-30 13:25:10 +0000
+++ modules/ed_readmore/ed_readmore.module	2009-05-31 11:24:41 +0000
@@ -145,10 +145,12 @@
 function ed_readmore_link_place($teaser, $node, $display) {
   if ($display == 'inline') {
     $block_tags = '(?:p)';
-    // Get last position of the last closing marker
-    // If found, insert the link before the marker
-    if (preg_match('!</?'. $block_tags .'[^>]*>$!i', $teaser, $match, PREG_OFFSET_CAPTURE)) {
-      $teaser = substr_replace($teaser, '&nbsp;'. ed_readmore_link_render($node, $display), $match[0][1], 0);
+    // Get last position of the last closing marker in teaser
+    if (preg_match('!</?'. $block_tags .'[^>]*>$!i', $node->content['body']['#value'], $match, PREG_OFFSET_CAPTURE)) {
+      // Recalculate that position in a $teaser that may have extra fields appended
+      $insert_point =  strpos($teaser, $node->content['body']['#value']) + $match[0][1];
+      // Insert the link      
+      $teaser = substr_replace($teaser, '&nbsp;'. ed_readmore_link_render($node, $display), $insert_point, 0);
     }
     // Image Assist module adds <div class="image-clear"></div> to the end of teasers with floated images
     else if (module_exists('img_assist') && preg_match('!</p>\n<div class="image-clear"></div>$!i', $teaser, $match, PREG_OFFSET_CAPTURE)) {

