summaryrefslogtreecommitdiff
path: root/idl/source/objects/module.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'idl/source/objects/module.cxx')
-rw-r--r--idl/source/objects/module.cxx72
1 files changed, 31 insertions, 41 deletions
diff --git a/idl/source/objects/module.cxx b/idl/source/objects/module.cxx
index 29ce9721cbbe..2062f05f633e 100644
--- a/idl/source/objects/module.cxx
+++ b/idl/source/objects/module.cxx
@@ -40,12 +40,9 @@ void SvMetaModule::ReadAttributesSvIdl( SvIdlDataBase & rBase,
if( ReadStringSvIdl( SvHash_SlotIdFile(), rInStm, aSlotIdFile ) )
{
- sal_uInt32 nTokPos = rInStm.Tell();
if( !rBase.ReadIdFile( OStringToOUString(aSlotIdFile, RTL_TEXTENCODING_ASCII_US)) )
{
- rBase.SetAndWriteError( rInStm, "cannot read file: " + aSlotIdFile );
-
- rInStm.Seek( nTokPos );
+ throw SvParseException( rInStm, "cannot read file: " + aSlotIdFile );
}
}
}
@@ -96,48 +93,41 @@ void SvMetaModule::ReadContextSvIdl( SvIdlDataBase & rBase,
OUString aFullName(OStringToOUString(rTok.GetString(), RTL_TEXTENCODING_ASCII_US));
rBase.StartNewFile( aFullName );
osl::FileBase::RC searchError = osl::File::searchFileURL(aFullName, rBase.GetPath(), aFullName);
+ if( osl::FileBase::E_None != searchError )
+ {
+ OStringBuffer aStr("cannot find file:");
+ aStr.append(OUStringToOString(aFullName, RTL_TEXTENCODING_UTF8));
+ throw SvParseException(aStr.makeStringAndClear(), rTok);
+ }
osl::FileBase::getSystemPathFromFileURL( aFullName, aFullName );
+ rBase.AddDepFile( aFullName );
+ SvTokenStream aTokStm( aFullName );
- if( osl::FileBase::E_None == searchError )
+ if( SVSTREAM_OK != aTokStm.GetStream().GetError() )
{
- rBase.AddDepFile( aFullName );
- SvTokenStream aTokStm( aFullName );
-
- if( SVSTREAM_OK == aTokStm.GetStream().GetError() )
- {
- // rescue error from old file
- SvIdlError aOldErr = rBase.GetError();
- // reset error
- rBase.SetError( SvIdlError() );
-
- sal_uInt32 nBeginPos = 0xFFFFFFFF; // can not happen with Tell
- while( nBeginPos != aTokStm.Tell() )
- {
- nBeginPos = aTokStm.Tell();
- ReadContextSvIdl( rBase, aTokStm );
- aTokStm.ReadDelimiter();
- }
- bOk = aTokStm.GetToken().IsEof();
- if( !bOk )
- {
- rBase.WriteError( aTokStm );
- }
- // recover error from old file
- rBase.SetError( aOldErr );
- }
- else
- {
- OStringBuffer aStr("cannot open file: ");
- aStr.append(OUStringToOString(aFullName, RTL_TEXTENCODING_UTF8));
- rBase.SetError(aStr.makeStringAndClear(), rTok);
- }
+ OStringBuffer aStr("cannot open file: ");
+ aStr.append(OUStringToOString(aFullName, RTL_TEXTENCODING_UTF8));
+ throw SvParseException(aStr.makeStringAndClear(), rTok);
}
- else
+ // rescue error from old file
+ SvIdlError aOldErr = rBase.GetError();
+ // reset error
+ rBase.SetError( SvIdlError() );
+
+ sal_uInt32 nBeginPos = 0xFFFFFFFF; // can not happen with Tell
+ while( nBeginPos != aTokStm.Tell() )
{
- OStringBuffer aStr("cannot find file:");
- aStr.append(OUStringToOString(aFullName, RTL_TEXTENCODING_UTF8));
- rBase.SetError(aStr.makeStringAndClear(), rTok);
+ nBeginPos = aTokStm.Tell();
+ ReadContextSvIdl( rBase, aTokStm );
+ aTokStm.ReadDelimiter();
+ }
+ bOk = aTokStm.GetToken().IsEof();
+ if( !bOk )
+ {
+ rBase.WriteError( aTokStm );
}
+ // recover error from old file
+ rBase.SetError( aOldErr );
}
if( !bOk )
rInStm.Seek( nTokPos );
@@ -148,7 +138,7 @@ void SvMetaModule::ReadContextSvIdl( SvIdlDataBase & rBase,
if( xSlot->ReadSvIdl( rBase, rInStm ) )
{
- if( xSlot->Test( rBase, rInStm ) )
+ if( xSlot->Test( rInStm ) )
{
// announce globally
rBase.AppendSlot( xSlot );