diff --git a/includes/theme.inc b/includes/theme.inc
index c3e8253cdf9b95664f65f6391f5bab0a01f5761b..84e3406dd454304787c202aa14c72a452e48f5f5 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -291,7 +291,7 @@ function list_theme_engines($refresh = FALSE) {
  * the $variables array:
  *
  * ENGINE_engine_preprocess(&$variables)
- *   This function should only be implemented by theme engines and is exists
+ *   This function should only be implemented by theme engines and exists
  *   so that the theme engine can set necessary variables. It is commonly
  *   used to set global variables such as $directory and $is_front_page.
  * ENGINE_engine_preprocess_HOOK(&$variables)
@@ -349,7 +349,11 @@ function theme() {
     // The theme call is a function.
     // Include a file if this theme function is held elsewhere.
     if (!empty($info['file'])) {
-      include_once($info['file']);
+      $function_file = $info['file'];
+      if (isset($info['path'])) {
+        $function_file = $info['path'] .'/'. $function_file;
+      }
+      include_once($function_file);
     }
     return call_user_func_array($info['function'], $args);
   }