*** pmwiki.bak	Sun May 31 05:09:14 2009
--- pmwiki.php	Wed Jun 24 14:29:27 2009
***************
*** 721,731 ****
  ## $PageTextVarPatterns) into a page's $PCache entry, and returns
  ## the property associated with $var.
  function PageTextVar($pagename, $var) {
    global $PCache, $PageTextVarPatterns;
    if (!@$PCache[$pagename]['=pagetextvars']) {
      $pc = &$PCache[$pagename];
      $pc['=pagetextvars'] = 1;
-     $page = RetrieveAuthPage($pagename, 'read', false, READPAGE_CURRENT);
      if ($page) {
        foreach((array)$PageTextVarPatterns as $pat) 
          if (preg_match_all($pat, @$page['text'], $match, PREG_SET_ORDER))
--- 721,741 ----
  ## $PageTextVarPatterns) into a page's $PCache entry, and returns
  ## the property associated with $var.
  function PageTextVar($pagename, $var) {
+   global $PCache;
+   if (!@$PCache[$pagename]['=pagetextvars']) {
+     $page = RetrieveAuthPage($pagename, 'read', false, READPAGE_CURRENT);
+ 	PTVCache($pagename, $page);
+   }
+   return @$PCache[$pagename]["=p_$var"];
+ }
+ 
+ ## PTVCache loads a page's text variables (defined by
+ ## $PageTextVarPatterns) into a page's $PCache entry
+ function PTVCache($pagename, $page) {
    global $PCache, $PageTextVarPatterns;
    if (!@$PCache[$pagename]['=pagetextvars']) {
      $pc = &$PCache[$pagename];
      $pc['=pagetextvars'] = 1;
      if ($page) {
        foreach((array)$PageTextVarPatterns as $pat) 
          if (preg_match_all($pat, @$page['text'], $match, PREG_SET_ORDER))
***************
*** 735,741 ****
            }
      }
    }
-   return @$PCache[$pagename]["=p_$var"];
  }
  
  
--- 745,750 ----
***************
*** 1661,1666 ****
--- 1670,1676 ----
    $text = preg_replace(array_keys($SaveAttrPatterns), 
                         array_values($SaveAttrPatterns), $new['text']);
    $LinkTargets = array();
+   PTVCache($pagename, $new); // cache the new values for use on this load
    $html = MarkupToHTML($pagename,$text);
    $new['targets'] = implode(',',array_keys((array)$LinkTargets));
    $p = & $PCache[$pagename];
***************
*** 1738,1743 ****
--- 1748,1755 ----
    global $IsPageSaved, $FmtV;
    if (@$_POST['preview']) {
      $text = '(:groupheader:)'.$new['text'].'(:groupfooter:)';
+     PCache($pagename, $new);
+     PTVCache($pagename, $new);
      $FmtV['$PreviewText'] = MarkupToHTML($pagename,$text);
    } 
  }