diff --git a/src/modules/mysql/result.c b/src/modules/mysql/result.c
index 8e5d6afe338c6d3ae652c951672f4bcd20914504..8da6638d78b4eb6854ae73f0fd23a9371bc7d2a8 100644
--- a/src/modules/mysql/result.c
+++ b/src/modules/mysql/result.c
@@ -1,5 +1,5 @@
 /*
- * $Id: result.c,v 1.7 1997/01/08 15:26:22 grubba Exp $
+ * $Id: result.c,v 1.8 1997/01/08 15:36:05 grubba Exp $
  *
  * mysql query result
  *
@@ -62,7 +62,7 @@ typedef struct dynamic_buffer_s dynamic_buffer;
  * Globals
  */
 
-RCSID("$Id: result.c,v 1.7 1997/01/08 15:26:22 grubba Exp $");
+RCSID("$Id: result.c,v 1.8 1997/01/08 15:36:05 grubba Exp $");
 
 struct program *mysql_result_program = NULL;
 
@@ -297,25 +297,15 @@ static void f_seek(INT32 args)
 /* int|array(string|int) fetch_row() */
 static void f_fetch_row(INT32 args)
 {
-  /* Based on Mysql.xs
-   */
+  int num_fields = mysql_num_fields(PIKE_MYSQL_RES->result);
   MYSQL_ROW row = mysql_fetch_row(PIKE_MYSQL_RES->result);
 
   pop_n_elems(args);
 
-  if (row) {
-    int num_fields, i;
+  if ((num_fields > 0) && row) {
+    int i;
 
-    /* Mysql.xs does a mysql_field_seek(result, 0) here,
-     * but that seems to be a NOOP.
-     */
-    if ((num_fields = mysql_num_fields(PIKE_MYSQL_RES->result)) <= 0) {
-      num_fields = 1;
-    }
     for (i=0; i < num_fields; i++) {
-      /* Mysql.xs does a mysql_fetch_field(result) here,
-       * but throws away the result.
-       */
       if (row[i]) {
 	push_text(row[i]);
       } else {