Changed files:
namespacing: sc/inc/scextopt.hxx
	     sc/source/filter/

corrupt.doc fails to load independant of linkoo

Valgrind can't do much on the stack: allocating on the heap instead gives:

~RootData 0x2354ce58
==11251== 
==11251== Invalid read of size 2
==11251==    at 0x24579381: XclRoot::GetCharSet() const (xlroot.hxx:179)
==11251==    by 0x2456370F: ImportExcel8::~ImportExcel8() (excimp8.cxx:186)
==11251==    by 0x245597E3: _STL::auto_ptr<ImportExcel>::~auto_ptr() (_auto_ptr.h:109)
==11251==    by 0x24558FF8: ScImportExcel(SfxMedium&, ScDocument*, EXCIMPFORMAT) (excel.cxx:235)
==11251==    by 0x240B91E2: ScDocShell::ConvertFrom(SfxMedium&) (in /opt/OpenOffice/src680-m79/sc/unxlngi4.pro/lib/libsc680li.so)
==11251==    by 0x1FB9EBFD: SfxObjectShell::DoLoad(SfxMedium*) (in /opt/OpenOffice/src680-m79/sfx2/unxlngi4.pro/lib/libsfx680li.so)
...
==11251==  Address 0x2493514C is 36 bytes inside a block of size 160 free'd
==11251==    at 0x1B902391: free (vg_replace_malloc.c:153)
==11251==    by 0x1C77D7C9: rtl_freeMemory_SYSTEM (alloc.c:1457)
==11251==    by 0x1C77D80C: rtl_freeMemory (alloc.c:1468)
==11251==    by 0x80A95BE: (within /opt/OOInstall/program/soffice.bin)
==11251==    by 0x80A9626: operator delete(void*) (in /opt/OOInstall/program/soffice.bin)
==11251==    by 0x24622457: XclImpRootData::~XclImpRootData() (xiroot.cxx:108)
==11251==    by 0x24558FEA: ScImportExcel(SfxMedium&, ScDocument*, EXCIMPFORMAT) (excel.cxx:235)
==11251==    by 0x240B91E2: ScDocShell::ConvertFrom(SfxMedium&) (in /opt/OpenOffice/src680-m79/sc/unxlngi4.pro/lib/libsc680li.so)
==11251==    by 0x1FB9EBFD: SfxObjectShell::DoLoad(SfxMedium*) (in /opt/OpenOffice/src680-m79/sfx2/unxlngi4.pro/lib/libsfx680li.so)
==11251==    by 0x1FBE6BB9: SfxBaseModel::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (in /opt/OpenOffice/src680-m79/sfx2/unxlngi4.pro/lib/libsfx680li.so)
==11251==    by 0x23B92B0C: OCommonEmbeddedObject::CreateDocFromMediaDescr_Impl(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (in /opt/OpenOffice/src680-m79/embeddedobj/unxlngi4.pro/lib/libembobj.so)
==11251==    by 0x23B94057: _ZN21OCommonEmbeddedObject18setPersistentEntryERKN3com3sun4star3uno9ReferenceINS2_5embed8XStorageEEERKN3rtl8OUStringElRKNS3_8SequenceINS2_5beans13PropertyValueEEESJ_ (in /opt/OpenOffice/src680-m79/embeddedobj/unxlngi4.pro/lib/libembobj.so)
==11251==    by 0x23BA0B06: _ZN24OOoEmbeddedObjectFactory37createInstanceInitFromMediaDescriptorERKN3com3sun4star3uno9ReferenceINS2_5embed8XStorageEEERKN3rtl8OUStringERKNS3_8SequenceINS2_5beans13PropertyValueEEESJ_ (in /opt/OpenOffice/src680-m79/embeddedobj/unxlngi4.pro/lib/libembobj.so)
==11251==    by 0x23B9D9A1: _ZN24UNOEmbeddedObjectCreator37createInstanceInitFromMediaDescriptorERKN3com3sun4star3uno9ReferenceINS2_5embed8XStorageEEERKN3rtl8OUStringERKNS3_8SequenceINS2_5beans13PropertyValueEEESJ_ (in /opt/OpenOffice/src680-m79/embeddedobj/unxlngi4.pro/lib/libembobj.so)
==11251==    by 0x1C574433: comphelper::EmbeddedObjectContainer::InsertEmbeddedObject(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, rtl::OUString&) (in /opt/OpenOffice/src680-m79/comphelper/unxlngi4.pro/lib/libcomphelp4gcc3.so)
==11251==    by 0x21926154: SvxMSDffManager::CheckForConvertToSOObj(unsigned long, SotStorage&, com::sun::star::uno::Reference<com::sun::star::embed::XStorage> const&, Graphic const&) (in /opt/OpenOffice/src680-m79/svx/unxlngi4.pro/lib/libsvx680li.so)
==11251== 
==11251== Invalid read of size 4
==11251==    at 0x24537E29: XclRoot::GetDoc() const (xlroot.hxx:218)
==11251==    by 0x2456370F: ImportExcel8::~ImportExcel8() (excimp8.cxx:186)
==11251==    by 0x245597E3: _STL::auto_ptr<ImportExcel>::~auto_ptr() (_auto_ptr.h:109)
==11251==    by 0x24558FF8: ScImportExcel(SfxMedium&, ScDocument*, EXCIMPFORMAT) (excel.cxx:235)
==11251==    by 0x240B91E2: ScDocShell::ConvertFrom(SfxMedium&) (in /opt/OpenOffice/src680-m79/sc/unxlngi4.pro/lib/libsc680li.so)
...
==11251==  Address 0x2493513C is 20 bytes inside a block of size 160 free'd
==11251==    at 0x1B902391: free (vg_replace_malloc.c:153)
==11251==    by 0x1C77D7C9: rtl_freeMemory_SYSTEM (alloc.c:1457)
==11251==    by 0x1C77D80C: rtl_freeMemory (alloc.c:1468)
==11251==    by 0x80A95BE: (within /opt/OOInstall/program/soffice.bin)
==11251==    by 0x80A9626: operator delete(void*) (in /opt/OOInstall/program/soffice.bin)
==11251==    by 0x24622457: XclImpRootData::~XclImpRootData() (xiroot.cxx:108)
==11251==    by 0x24558FEA: ScImportExcel(SfxMedium&, ScDocument*, EXCIMPFORMAT) (excel.cxx:235)
==11251==    by 0x240B91E2: ScDocShell::ConvertFrom(SfxMedium&) (in /opt/OpenOffice/src680-m79/sc/unxlngi4.pro/lib/libsc680li.so)

This is really all from:

ImportExcel::~ImportExcel( void )
{
    GetDoc().SetSrcCharSet( GetCharSet() );

    delete pExtNameBuff;

    delete pOutlineListBuffer;

	delete pFormConv;
}

Getting the order of freeing stuff right is critical.

Secondly:

==16434== Invalid free() / delete / delete[]
==16434==    at 0x1B902391: free (vg_replace_malloc.c:153)
==16434==    by 0x1C77D7C9: rtl_freeMemory_SYSTEM (alloc.c:1457)
==16434==    by 0x1C77D80C: rtl_freeMemory (alloc.c:1468)
==16434==    by 0x80A95BE: (within /opt/OOInstall/program/soffice.bin)
==16434==    by 0x80A9626: operator delete(void*) (in /opt/OOInstall/program/soffice.bin)
==16434==    by 0x2463F7EF: _STL::auto_ptr<RootData>::~auto_ptr() (_auto_ptr.h:109)
==16434==    by 0x2463E129: XclRootData::~XclRootData() (xlroot.cxx:200)
==16434==    by 0x24622624: XclImpRootData::~XclImpRootData() (xiroot.cxx:107)
==16434==    by 0x24559000: ScImportExcel(SfxMedium&, ScDocument*, EXCIMPFORMAT) (excel.cxx:241)
==16434==    by 0x240B91E2: ScDocShell::ConvertFrom(SfxMedium&) (in /opt/OpenOffice/src680-m79/sc/unxlngi4.pro/lib/libsc680li.so)
...
==16434==  Address 0x2497CDB0 is 0 bytes inside a block of size 96 free'd
==16434==    at 0x1B902391: free (vg_replace_malloc.c:153)
==16434==    by 0x1C77D7C9: rtl_freeMemory_SYSTEM (alloc.c:1457)
==16434==    by 0x1C77D80C: rtl_freeMemory (alloc.c:1468)
==16434==    by 0x80A95BE: (within /opt/OOInstall/program/soffice.bin)
==16434==    by 0x80A96FC: operator delete[](void*) (in /opt/OOInstall/program/soffice.bin)
==16434==    by 0x22EA9E84: ColRowSettings::~ColRowSettings() (in /opt/OpenOffice/src680-m79/sw/unxlngi4.pro/lib/libsw680li.so)
==16434==    by 0x24579334: _STL::auto_ptr<ColRowSettings>::~auto_ptr() (_auto_ptr.h:109)
==16434==    by 0x24578E4F: OutlineDataBuffer::~OutlineDataBuffer() (impop.cxx:1692)
==16434==    by 0x24579D10: ScfDelList<OutlineDataBuffer>::Clear() (ftools.hxx:457)
==16434==    by 0x24579CA6: ScfDelList<OutlineDataBuffer>::~ScfDelList() (ftools.hxx:451)
==16434==    by 0x245744C8: ImportExcel::~ImportExcel() (impop.cxx:263)
==16434==    by 0x24563727: ImportExcel8::~ImportExcel8() (excimp8.cxx:186)
==16434==    by 0x2455983F: _STL::auto_ptr<ImportExcel>::reset(ImportExcel*) (_auto_ptr.h:56)
==16434==    by 0x24558F68: ScImportExcel(SfxMedium&, ScDocument*, EXCIMPFORMAT) (excel.cxx:233)
==16434==    by 0x240B91E2: ScDocShell::ConvertFrom(SfxMedium&) (in /opt/OpenOffice/src680-m79/sc/unxlngi4.pro/lib/libsc680li.so)

ie. the XclRoot derived object is freeing it's parent via a derived autoptr.
