Think C 4.0 fixes a bug in 3.0 that we programmed around.
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index 09690c6..f87e22e 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -188,8 +188,8 @@
v = newsizedstringobject((char *)NULL, n);
if (v == NULL)
return NULL;
-#ifndef THINK_C
- /* XXX Think C reads n characters, others read n-1 characters... */
+#ifndef THINK_C_3_0
+ /* XXX Think C 3.0 wrongly reads up to n characters... */
n = n+1;
#endif
if (fgets(getstringvalue(v), n, f->f_fp) == NULL) {