VirtualBox

Changeset 33975 in vbox


Ignore:
Timestamp:
Nov 11, 2010 11:14:54 AM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
67637
Message:

free fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/vfs/vfsbase.cpp

    r33973 r33975  
    369369     */
    370370    rtVfsObjWriteLock(pThis);           /* paranoia */
     371    void *pvToFree;
    371372    switch (enmType)
    372373    {
    373374        case RTVFSOBJTYPE_BASE:
     375            pvToFree = pThis;
    374376            break;
    375377
    376378        case RTVFSOBJTYPE_VFS:
     379            pvToFree         = RT_FROM_MEMBER(pThis, RTVFSINTERNAL, Base);
    377380            ASMAtomicWriteU32(&RT_FROM_MEMBER(pThis, RTVFSINTERNAL, Base)->uMagic, RTVFS_MAGIC_DEAD);
    378381            break;
    379382
    380383        case RTVFSOBJTYPE_FS_STREAM:
     384            pvToFree         = RT_FROM_MEMBER(pThis, RTVFSFSSTREAMINTERNAL, Base);
    381385            ASMAtomicWriteU32(&RT_FROM_MEMBER(pThis, RTVFSFSSTREAMINTERNAL, Base)->uMagic, RTVFSFSSTREAM_MAGIC_DEAD);
    382386            break;
    383387
    384388        case RTVFSOBJTYPE_IO_STREAM:
     389            pvToFree         = RT_FROM_MEMBER(pThis, RTVFSIOSTREAMINTERNAL, Base);
    385390            ASMAtomicWriteU32(&RT_FROM_MEMBER(pThis, RTVFSIOSTREAMINTERNAL, Base)->uMagic, RTVFSIOSTREAM_MAGIC_DEAD);
    386391            break;
    387392
    388393        case RTVFSOBJTYPE_DIR:
     394            pvToFree         = RT_FROM_MEMBER(pThis, RTVFSDIRINTERNAL, Base);
    389395            ASMAtomicWriteU32(&RT_FROM_MEMBER(pThis, RTVFSDIRINTERNAL, Base)->uMagic, RTVFSDIR_MAGIC_DEAD);
    390396            break;
    391397
    392398        case RTVFSOBJTYPE_FILE:
     399            pvToFree         = RT_FROM_MEMBER(pThis, RTVFSFILEINTERNAL, Stream.Base);
     400            ASMAtomicWriteU32(&RT_FROM_MEMBER(pThis, RTVFSFILEINTERNAL, Stream.Base)->uMagic, RTVFSFILE_MAGIC_DEAD);
    393401            ASMAtomicWriteU32(&RT_FROM_MEMBER(pThis, RTVFSIOSTREAMINTERNAL, Base)->uMagic, RTVFSIOSTREAM_MAGIC_DEAD);
    394             ASMAtomicWriteU32(&RT_FROM_MEMBER(pThis, RTVFSFILEINTERNAL, Stream.Base)->uMagic, RTVFSFILE_MAGIC_DEAD);
    395402            break;
    396403
    397404        case RTVFSOBJTYPE_SYMLINK:
     405            pvToFree         = RT_FROM_MEMBER(pThis, RTVFSSYMLINKINTERNAL, Base);
    398406            ASMAtomicWriteU32(&RT_FROM_MEMBER(pThis, RTVFSSYMLINKINTERNAL, Base)->uMagic, RTVFSSYMLINK_MAGIC_DEAD);
    399407            break;
     
    414422    int rc = pThis->pOps->pfnClose(pThis->pvThis);
    415423    AssertRC(rc);
    416     RTMemFree(pThis);
     424    RTMemFree(pvToFree);
    417425}
    418426
Note: See TracChangeset for help on using the changeset viewer.

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