--- libs/util/quakeio.c.orig	16 Oct 2002 04:59:34 -0000	1.18
+++ libs/util/quakeio.c	24 Oct 2002 22:36:15 -0000	1.19
@@ -425,8 +425,14 @@
 				res = fseek (file->file, offset, whence);
 				break;
 			case SEEK_END:
-				res = fseek (file->file,
-							 file->start + file->size - offset, SEEK_SET);
+				if (file->size == -1) {
+					// we don't know the size (due to writing) so punt and
+					// pass on the request as-is
+					res = fseek (file->file, offset, SEEK_END);
+				} else {
+					res = fseek (file->file,
+								 file->start + file->size - offset, SEEK_SET);
+				}
 				break;
 			default:
 				errno = EINVAL;
