Kaydet (Commit) 3c51c3db authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Attempted fix for "Resolves: #i126762# Ignore dictionary not in specified...

...location."  Caused many crashed during "make check", when aLocaleNames is a
sequence of 17 ("ar-SA", "ar-DZ", ...), but aLcoations merely a sequence of 2
(".../dict-ar/ar.aff", ".../dict-ar/ar.dic").

From comments further down below, it looks like aLocations will always contain
exactly two entries ("also both files have to be in the same directory and the
file names must only differ in the extension (.aff/.dic)"), and that all the
aLocaleNames members share the same set of aLocations ("Thus here we work-around
this by adding the same dictionary several times. Once for each of its supported
locales"), so that it would appear to be OK to just check once for the existenceof aLocations[0].

(There is a check for

    if (aDictIt->aLocaleNames.getLength() > 0 &&
        aDictIt->aLocations.getLength() > 0)

below, so it might be that these can be empty, or it might just be "defensive
programming."  Play it safe, and check here that aLocations is not empty.)

Change-Id: I82bea6571983e397a9e164b294a5ba656b511a67
üst f6c3c942
......@@ -526,6 +526,7 @@ certain functionality.
@li @c drawinglayer
@li @c helpcompiler
@li @c jvmaccess
@li @c lingucomponent
@li @c linguistic
@li @c lwp - lotuswordpro
@li @c mysqlc
......
......@@ -43,6 +43,7 @@
#include <osl/file.hxx>
#include <rtl/ustrbuf.hxx>
#include <rtl/textenc.h>
#include <sal/log.hxx>
#include <list>
#include <set>
......@@ -153,12 +154,24 @@ Sequence< Locale > SAL_CALL SpellChecker::getLocales()
{
uno::Sequence< OUString > aLocaleNames( aDictIt->aLocaleNames );
uno::Sequence< OUString > aLocations( aDictIt->aLocations );
sal_Int32 nLen2 = aLocaleNames.getLength();
for (k = 0; k < nLen2; ++k)
SAL_WARN_IF(
aLocaleNames.hasElements() && !aLocations.hasElements(),
"lingucomponent", "no locations");
if (aLocations.hasElements())
{
if (xAccess.is() && xAccess->exists(aLocations[k]))
if (xAccess.is() && xAccess->exists(aLocations[0]))
{
aLocaleNamesSet.insert( aLocaleNames[k] );
sal_Int32 nLen2 = aLocaleNames.getLength();
for (k = 0; k < nLen2; ++k)
{
aLocaleNamesSet.insert( aLocaleNames[k] );
}
}
else
{
SAL_WARN(
"lingucomponent",
"missing <" << aLocations[0] << ">");
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment