brelse(bp);
}
-
+ /* Bletch */
+#if defined(__M6809__)
+ gcc_miscompile_workaround();
+#endif
udata.u_base += amount;
udata.u_offset += amount;
if (ispipe && udata.u_offset >= 18 * BLKSIZE)
while (towrite) {
amount = min(towrite, BLKSIZE - BLKOFF(udata.u_offset));
+ if (udata.u_offset >> BLKOVERSIZE) {
+ udata.u_error = EFBIG;
+ ssig(udata.u_ptab, SIGXFSZ);
+ break;
+ }
+
if ((pblk =
bmap(ino, udata.u_offset >> BLKSHIFT,
0)) == NULLBLK)
oftp->o_ptr = ino->c_node.i_size;
/* Initialize u_offset from file pointer */
udata.u_offset = oftp->o_ptr;
- /* FIXME: for 32bit we will need to check for overflow of the
- file size here in the r/w inode code */
return (ino);
}