diff options
Diffstat (limited to 'idl/source')
-rw-r--r-- | idl/source/prj/database.cxx | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/idl/source/prj/database.cxx b/idl/source/prj/database.cxx index dc4cecb34895..4b0a58424558 100644 --- a/idl/source/prj/database.cxx +++ b/idl/source/prj/database.cxx @@ -174,8 +174,19 @@ bool SvIdlDataBase::ReadIdFile( std::string_view rOFileName ) if( !rTok.IsChar() || rTok.GetChar() != '<') throw SvParseException( "expected '<'", rTok ); rTok = aTokStm.GetToken_Next(); - if( !rTok.IsIdentifier() ) - throw SvParseException( "expected identifier", rTok ); + if (rTok.IsChar() && rTok.GetChar() == ':') + { + // add support for "::avmedia::MediaItem" namespaced identifier + rTok = aTokStm.GetToken_Next(); + if( !rTok.IsChar() || rTok.GetChar() != ':') + throw SvParseException( "expected ':'", rTok ); + // the lexer reads "avmedia::MediaItem" as an identifier + rTok = aTokStm.GetToken_Next(); + if( !rTok.IsIdentifier() ) + throw SvParseException( "expected identifier", rTok ); + } + else if( !rTok.IsIdentifier() ) + throw SvParseException( "expected identifier", rTok ); rTok = aTokStm.GetToken_Next(); if( !rTok.IsChar() || rTok.GetChar() != '>') throw SvParseException( "expected '<'", rTok ); |