--- webform.module.orig	2009-11-05 19:59:43.000000000 -0600
+++ webform.module	2009-11-10 14:52:42.320366937 -0600
@@ -1828,6 +1828,7 @@
       '%session' => $_SESSION,
       '%post' => $_POST,
       '%request' => $_REQUEST,
+      '%profile' => $user,
     ),
   );
 
@@ -1836,13 +1837,16 @@
     $replacements['unsafe']['%username'] = isset($user->name) ? $user->name : '';
     $replacements['unsafe']['%useremail'] = isset($user->mail) ? $user->mail : '';
     $replacements['unsafe']['%ip_address'] = ip_address();
+
+    // Doesn't really belong here with user things, but works.
+    $special_tokens['unsafe']['%server'] = $_SERVER;
+  }
+
+  if (!isset($replacements['unsafe']['%profile[uid]'])) {
     if ($user->uid && module_exists('profile')) {
       profile_load_profile($user);
     }
     $special_tokens['unsafe']['%profile'] = $user;
-
-    // Doesn't really belong here with user things, but works.
-    $special_tokens['unsafe']['%server'] = $_SERVER;
   }
 
   foreach ($special_tokens as $safe_state => $tokens) {
