Index: glossary.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/glossary/glossary.module,v
retrieving revision 1.100.2.20.2.20
diff -u -p -r1.100.2.20.2.20 glossary.module
--- glossary.module	25 Apr 2008 12:18:27 -0000	1.100.2.20.2.20
+++ glossary.module	26 Apr 2008 09:29:29 -0000
@@ -387,14 +387,18 @@ function _glossary_insertlink($format, &
   $multibyte_enabled = extension_loaded('mbstring');
   if ($multibyte_enabled) {
     $mb_prefix = 'mb_';
+    $drupal_prefix = 'mb_';
   }
   else {
     $mb_prefix = null;
+    $drupal_prefix = null;
   }
   $case_sensitive = variable_get("glossary_case_$format", '1');
 //  $findfunc = $mb_prefix . ($case_sensitive ? 'strpos' : 'stripos');
   $findfunc = $mb_prefix .'strpos';
   $findtagfunc = $mb_prefix .'strpos';
+  $substrfunc = $drupal_prefix .'substr';
+  $strlenfunc = $drupal_prefix .'strlen';
 
   $replaceall = variable_get("glossary_replace_all_$format", 0);
 
@@ -422,7 +426,7 @@ function _glossary_insertlink($format, &
     while (($offset = $findtagfunc($searchtext, $tag, $offset)) !== false) {
       // Longer tags will override shorter '<' on the same offset.
       $events[$offset] = array('type' => 'open', 'which' => $i);
-      $offset += drupal_strlen($tag);
+      $offset += $strlenfunc($tag);
     }
   }
 
@@ -435,10 +439,10 @@ function _glossary_insertlink($format, &
       $offset=0;
       $first_match_found = false;
       while (($offset = $findfunc($searchtext, $synonym, $offset)) !== false) {
-        $len = drupal_strlen($synonym);
-        $match = drupal_substr($text, $offset, $len);
+        $len = $strlenfunc($synonym);
+        $match = $substrfunc($text, $offset, $len);
         // Only longer matches override shorter ones.
-        if (!isset($events[$offset]) || drupal_strlen($events[$offset]['match']) < drupal_strlen($match)) {
+        if (!isset($events[$offset]) || $strlenfunc($events[$offset]['match']) < $strlenfunc($match)) {
           // Get synonym with case as in text.
           $events[$offset] = array('type' => 'match', 'which' => $i, 'match' => $match);
           if (!$replaceall) {
@@ -466,47 +470,47 @@ function _glossary_insertlink($format, &
       continue;
     }
     // Copy plain text (with no events).
-      $newtext .= drupal_substr($text, $parsed, ($place - $parsed));
+      $newtext .= $substrfunc($text, $parsed, ($place - $parsed));
       $parsed = $place;
     // If a blocking tag is opened, skip to closing tag.
     if ($event['type'] == 'open') {
       $skip = $findtagfunc($text, $close_tags[$event['which']], $place);
       if ($skip === false) {
-        $skip = drupal_strlen($text);
+        $skip = $strlenfunc($text);
       }
       // If the tag is [no-glossary] - remove it with the closing tag (by incrementing $parsed without copying).
       if ($event['which'] == 0) {
-        $parsed += drupal_strlen($open_tags[$event['which']]);
-        $newtext .= drupal_substr($text, $parsed, ($skip - $parsed));
-        $parsed = $skip + drupal_strlen($close_tags[$event['which']]);
+        $parsed += $strlenfunc($open_tags[$event['which']]);
+        $newtext .= $substrfunc($text, $parsed, ($skip - $parsed));
+        $parsed = $skip + $strlenfunc($close_tags[$event['which']]);
       }
       // Copy text without changing it.
       else {
-        $newtext .= drupal_substr($text, $parsed, ($skip - $parsed));
+        $newtext .= $substrfunc($text, $parsed, ($skip - $parsed));
         $parsed = $skip;
       }
     }
     if ($event['type'] == 'match') {
-      $matchlen = drupal_strlen($event['match']);
+      $matchlen = $strlenfunc($event['match']);
       $proper_match = false;
       switch (variable_get("glossary_match_$format", 'b')) {
           case 'lr': // Require word break left or right.
 //            $proper_match = (_glossary_is_boundary($text {$next - 1}) || _glossary_is_boundary($text {$next + $matchlen}));
-            $proper_match = (_glossary_is_boundary(drupal_substr($text, $place - 1, 1)) ||
-                             _glossary_is_boundary(drupal_substr($text, $place + $matchlen, 1 )));
+            $proper_match = (_glossary_is_boundary($substrfunc($text, $place - 1, 1)) ||
+                             _glossary_is_boundary($substrfunc($text, $place + $matchlen, 1 )));
             break;
           case 'b': // Require word break left and right.
 //            $proper_match = (_glossary_is_boundary($text {$next - 1}) && _glossary_is_boundary($text {$next + $matchlen}));
-            $proper_match = (_glossary_is_boundary(drupal_substr($text, $place - 1, 1)) &&
-                             _glossary_is_boundary(drupal_substr($text, $place + $matchlen, 1)));
+            $proper_match = (_glossary_is_boundary($substrfunc($text, $place - 1, 1)) &&
+                             _glossary_is_boundary($substrfunc($text, $place + $matchlen, 1)));
             break;
           case 'l':  // Require word break left.
 //            $proper_match = _glossary_is_boundary($text {$next - 1});
-            $proper_match = _glossary_is_boundary(drupal_substr($text, $place - 1, 1));
+            $proper_match = _glossary_is_boundary($substrfunc($text, $place - 1, 1));
             break;
           case 'r': // Require word break right.
 //            $proper_match = _glossary_is_boundary($text {$next + $matchlen});
-            $proper_match = _glossary_is_boundary(drupal_substr($text, $place + $matchlen, 1));
+            $proper_match = _glossary_is_boundary($substrfunc($text, $place + $matchlen, 1));
             break;
           case 's': // Match any substring.
           default:
@@ -521,7 +525,7 @@ function _glossary_insertlink($format, &
   }
 
   // Append remaining part.
-  return $newtext . drupal_substr($text, $parsed);
+  return $newtext . $substrfunc($text, $parsed);
 }
 
 function glossary_page($vid = null, $letter = null) {
