--- path_redirect.install	2008-03-04 21:25:09.000000000 -0600
+++ path_redirect.install	2008-03-07 19:33:43.000000000 -0600
@@ -9,7 +9,7 @@ function path_redirect_install() {
         rid int(10) NOT NULL,
         path varchar(255) NOT NULL,
         redirect varchar(255) NOT NULL,
-        query varchar(50) NOT NULL,
+        query varchar(255) NOT NULL,
         fragment varchar(50) NOT NULL,
         type int(10) NOT NULL,
         PRIMARY KEY  (path),
@@ -21,7 +21,7 @@ function path_redirect_install() {
         rid SERIAL UNIQUE,
         path varchar(255) NOT NULL PRIMARY KEY,
         redirect varchar(255) NOT NULL,
-        query varchar(50) NOT NULL,
+        query varchar(255) NOT NULL,
         fragment varchar(50) NOT NULL,
         type smallint NOT NULL
         );");
@@ -81,12 +81,22 @@ function path_redirect_update_3() {
 }
 
 /**
- * Clear the menu cache since paths have changed.
+ * Clear the menu cache since paths have changed; increase query string length.
  */
 function path_redirect_update_4() {
   cache_clear_all(NULL, 'cache_menu');
   drupal_set_message(t('Menu paths for the Path Redirect module have been updated.'));
-  return array();
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      $ret[] = update_sql("ALTER TABLE {path_redirect} MODIFY query varchar(255) NOT NULL");
+      break;
+    case 'pgsql':
+      $ret[] = update_sql("ALTER TABLE {path_redirect} ALTER query TYPE varchar(255)");
+      break;
+  }
+  drupal_set_message(t('Database tables for the Path Redirect module have been updated.'));
+  return $ret;
 }
 
 function path_redirect_uninstall() {
--- path_redirect.module	2008-03-07 18:42:08.000000000 -0600
+++ path_redirect.module	2008-03-07 19:35:25.000000000 -0600
@@ -54,7 +54,7 @@ function path_redirect_init() {
       path_redirect_goto($r->redirect, ($r->query ? $r->query: NULL), ($r->fragment ? $r->fragment : NULL), $r->type);
     }
   }
-  else if (url($r->redirect) == url($path)) {
+  else if ($r && url($r->redirect) == url($path)) {
     watchdog('path_redirect', t('Redirect to <code>%redirect</code> is causing an infinite loop; redirect cancelled.', array('%redirect' => $r->redirect)), WATCHDOG_WARNING, l(t('edit'), 'admin/build/path-redirect/edit/'. $r->rid));
   }
   else if ($r && variable_get('path_redirect_allow_bypass', 0) && !empty($_GET['redirect']) && $_GET['redirect'] === 'no') {
