VirtualBox

Changeset 20823 in vbox


Ignore:
Timestamp:
Jun 23, 2009 12:48:34 PM (15 years ago)
Author:
vboxsync
Message:

iprt/stream.cpp: alignment hacks.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/stream.cpp

    r18808 r20823  
    4242#include <iprt/param.h>
    4343#include <iprt/string.h>
     44
     45#include "internal/alignmentchecks.h"
    4446#include "internal/magics.h"
    4547
     
    402404            if (pcbWritten)
    403405            {
     406                IPRT_ALIGNMENT_CHECKS_DISABLE(); /* glibc / mempcpy again */
    404407                *pcbWritten = fwrite(pvBuf, 1, cbWrite, pStream->pFile);
     408                IPRT_ALIGNMENT_CHECKS_ENABLE();
    405409                if (    *pcbWritten == cbWrite
    406410                    ||  !ferror(pStream->pFile))
     
    411415            {
    412416                /*
    413                  * Must read it all!
     417                 * Must write it all!
    414418                 */
    415                 if (fwrite(pvBuf, cbWrite, 1, pStream->pFile) == 1)
     419                IPRT_ALIGNMENT_CHECKS_DISABLE(); /* glibc / mempcpy again */
     420                size_t cbWritten = fwrite(pvBuf, cbWrite, 1, pStream->pFile);
     421                IPRT_ALIGNMENT_CHECKS_ENABLE();
     422                if (cbWritten == 1)
    416423                    return VINF_SUCCESS;
    417424                if (!ferror(pStream->pFile))
     
    500507            {
    501508                cchString--;            /* save space for the terminator. */
    502                 #ifdef HAVE_FWRITE_UNLOCKED
     509#ifdef HAVE_FWRITE_UNLOCKED
    503510                flockfile(pStream->pFile);
    504                 #endif
     511#endif
    505512                for (;;)
    506513                {
    507                     #ifdef HAVE_FWRITE_UNLOCKED
     514#ifdef HAVE_FWRITE_UNLOCKED
    508515                    int ch = fgetc_unlocked(pStream->pFile);
    509                     #else
     516#else
    510517                    int ch = fgetc(pStream->pFile);
    511                     #endif
     518#endif
    512519                    if (ch == EOF)
    513520                    {
    514                         #ifdef HAVE_FWRITE_UNLOCKED
     521#ifdef HAVE_FWRITE_UNLOCKED
    515522                        if (feof_unlocked(pStream->pFile))
    516                         #else
     523#else
    517524                        if (feof(pStream->pFile))
    518                         #endif
     525#endif
    519526                        {
    520527                            rc = VERR_EOF;
    521528                            break;
    522529                        }
    523                         #ifdef HAVE_FWRITE_UNLOCKED
     530#ifdef HAVE_FWRITE_UNLOCKED
    524531                        if (ferror_unlocked(pStream->pFile))
    525                         #else
     532#else
    526533                        if (ferror(pStream->pFile))
    527                         #endif
     534#endif
    528535                            rc = VERR_READ_ERROR;
    529536                        else
     
    543550                    }
    544551                }
    545                 #ifdef HAVE_FWRITE_UNLOCKED
     552#ifdef HAVE_FWRITE_UNLOCKED
    546553                funlockfile(pStream->pFile);
    547                 #endif
     554#endif
    548555
    549556                *pszString = '\0';
     
    597604        if (RT_SUCCESS(rc))
    598605        {
    599             #ifdef HAVE_FWRITE_UNLOCKED
     606            IPRT_ALIGNMENT_CHECKS_DISABLE(); /* glibc / mempcpy again */
     607#ifdef HAVE_FWRITE_UNLOCKED
    600608            if (fwrite_unlocked(pachChars, cchChars, 1, pStream->pFile) != 1)
    601             #else
     609#else
    602610            if (fwrite(pachChars, cchChars, 1, pStream->pFile) != 1)
    603             #endif
     611#endif
    604612                ASMAtomicXchgS32(&pStream->i32Error, VERR_WRITE_ERROR);
     613            IPRT_ALIGNMENT_CHECKS_ENABLE();
    605614        }
    606615    }
     
    627636        {
    628637            /** @todo consider making this thread safe... */
    629             #ifdef HAVE_FWRITE_UNLOCKED
     638#ifdef HAVE_FWRITE_UNLOCKED
    630639            flockfile(pStream->pFile);
    631640            rc = (int)RTStrFormatV(rtstrmOutput, pStream, NULL, NULL, pszFormat, args);
    632641            funlockfile(pStream->pFile);
    633             #else
     642#else
    634643            rc = (int)RTStrFormatV(rtstrmOutput, pStream, NULL, NULL, pszFormat, args);
    635             #endif
     644#endif
    636645            Assert(rc >= 0);
    637646        }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette