diff options
Diffstat (limited to 'usr/src/lib/libc/port/stdio/fwrite.c')
-rw-r--r-- | usr/src/lib/libc/port/stdio/fwrite.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/usr/src/lib/libc/port/stdio/fwrite.c b/usr/src/lib/libc/port/stdio/fwrite.c index 77b301228c..6ab340e26d 100644 --- a/usr/src/lib/libc/port/stdio/fwrite.c +++ b/usr/src/lib/libc/port/stdio/fwrite.c @@ -2,9 +2,8 @@ * CDDL HEADER START * * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. @@ -19,8 +18,9 @@ * * CDDL HEADER END */ + /* - * Copyright 2004 Sun Microsystems, Inc. All rights reserved. + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -112,7 +112,8 @@ _fwrite_unlocked(const void *ptr, size_t size, size_t count, FILE *iop) while ((n = write(fileno(iop), data, (size_t)bytes)) != bytes) { if (n == -1) { - iop->_flag |= _IOERR; + if (!cancel_active()) + iop->_flag |= _IOERR; return (0); } else { data += n; @@ -128,7 +129,8 @@ _fwrite_unlocked(const void *ptr, size_t size, size_t count, FILE *iop) */ while ((n = write(fileno(iop), dptr, s)) != s) { if (n == -1) { - iop->_flag |= _IOERR; + if (!cancel_active()) + iop->_flag |= _IOERR; return (written / size); } else { dptr += n; |