Kaydet (Commit) dd4befa9 authored tarafından Noel Grandin's avatar Noel Grandin Kaydeden (comit) Miklos Vajna

fix crash in writer, thanks to my new assert in typed_flags_set

and clean up the duplication of constants between filter/ and
comphelper/ in the process

Change-Id: I0d1525b559c63a3d39deae51accff5dcdbb0aa82
Reviewed-on: https://gerrit.libreoffice.org/17446Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
Tested-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
üst 9ffdcc76
......@@ -125,33 +125,6 @@
#define FLAGNAME_USESOPTIONS "USESOPTIONS"
#define FLAGNAME_COMBINED "COMBINED"
/** @short values of filter flags, sorted based on value */
#define FLAGVAL_IMPORT 0x00000001 // 1
#define FLAGVAL_EXPORT 0x00000002 // 2
#define FLAGVAL_TEMPLATE 0x00000004 // 4
#define FLAGVAL_INTERNAL 0x00000008 // 8
#define FLAGVAL_TEMPLATEPATH 0x00000010 // 16
#define FLAGVAL_OWN 0x00000020 // 32
#define FLAGVAL_ALIEN 0x00000040 // 64
#define FLAGVAL_USESOPTIONS 0x00000080 // 128
#define FLAGVAL_DEFAULT 0x00000100 // 256
#define FLAGVAL_SUPPORTSSELECTION 0x00000400 // 1024
#define FLAGVAL_NOTINFILEDIALOG 0x00001000 // 4096
#define FLAGVAL_NOTINCHOOSER 0x00002000 // 8192
#define FLAGVAL_ASYNCHRON 0x00004000 // 16384
#define FLAGVAL_READONLY 0x00010000 // 65536
#define FLAGVAL_NOTINSTALLED 0x00020000 // 131072
#define FLAGVAL_CONSULTSERVICE 0x00040000 // 262144
#define FLAGVAL_3RDPARTYFILTER 0x00080000 // 524288
#define FLAGVAL_PACKED 0x00100000 // 1048576
#define FLAGVAL_BROWSERPREFERRED 0x00400000 // 4194304
#define FLAGVAL_COMBINED 0x00800000 // 8388608
#define FLAGVAL_ENCRYPTION 0x01000000 // 16777216
#define FLAGVAL_PASSWORDTOMODIFY 0x02000000 // 33554432
#define FLAGVAL_PREFERRED 0x10000000 // 268435456
#define FLAGVAL_STARTPRESENTATION 0x20000000 // 268435456
#define FLAGVAL_ALL 0xffffffff // 4294967295
/** @short some uno service names.
*/
#define SERVICE_CONFIGURATIONUPDATEACCESS "com.sun.star.configuration.ConfigurationUpdateAccess"
......
......@@ -30,6 +30,7 @@
#include <com/sun/star/util/ChangesEvent.hpp>
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/uno/Any.h>
#include <comphelper/documentconstants.hxx>
#include <rtl/ref.hxx>
#include <rtl/ustring.hxx>
......@@ -959,10 +960,9 @@ class FilterCache : public BaseLock
@param lNames
the list of flag names.
@return [sal_Int32]
the converted flag field.
@return the converted flag field.
*/
static sal_Int32 impl_convertFlagNames2FlagField(const css::uno::Sequence< OUString >& lNames);
static SfxFilterFlags impl_convertFlagNames2FlagField(const css::uno::Sequence< OUString >& lNames);
......@@ -974,7 +974,7 @@ class FilterCache : public BaseLock
@return [seq< string >]
the converted flag name list.
*/
static css::uno::Sequence< OUString > impl_convertFlagField2FlagNames(sal_Int32 nFlags);
static css::uno::Sequence< OUString > impl_convertFlagField2FlagNames(SfxFilterFlags nFlags);
};
} // namespace config
......
......@@ -518,9 +518,9 @@ void TypeDetection::impl_checkResultsAndAddBestFilter(utl::MediaDescriptor& rDes
sal_Int32 nFlags = 0;
aFilter[PROPNAME_FLAGS] >>= nFlags;
if ((nFlags & FLAGVAL_IMPORT) == FLAGVAL_IMPORT)
if (static_cast<SfxFilterFlags>(nFlags) & SfxFilterFlags::IMPORT)
sFilter = *pIt;
if ((nFlags & FLAGVAL_PREFERRED) == FLAGVAL_PREFERRED)
if (static_cast<SfxFilterFlags>(nFlags) & SfxFilterFlags::PREFERED)
break;
}
catch(const css::uno::Exception&) {}
......@@ -603,7 +603,7 @@ void TypeDetection::impl_checkResultsAndAddBestFilter(utl::MediaDescriptor& rDes
sal_Int32 nFlags = 0;
aFilter[PROPNAME_FLAGS] >>= nFlags;
if ((nFlags & FLAGVAL_IMPORT) == FLAGVAL_IMPORT)
if (static_cast<SfxFilterFlags>(nFlags) & SfxFilterFlags::IMPORT)
break;
}
catch(const css::uno::Exception&)
......
......@@ -113,25 +113,28 @@ enum class SfxFilterFlags
EXECUTABLE = 0x00000200L,
SUPPORTSSELECTION = 0x00000400L,
NOTINFILEDLG = 0x00001000L,
NOTINCHOOSER = 0x00002000L,
ASYNCHRON = 0x00004000L,
OPENREADONLY = 0x00010000L,
MUSTINSTALL = 0x00020000L,
CONSULTSERVICE = 0x00040000L,
STARONEFILTER = 0x00080000L,
PACKED = 0x00100000L,
BROWSERPREFERRED = 0x00400000L,
COMBINED = 0x00800000L,
ENCRYPTION = 0x01000000L,
PASSWORDTOMODIFY = 0x02000000L,
PREFERED = 0x10000000L,
STARTPRESENTATION = 0x20000000L,
NONE = 0
};
namespace o3tl
{
template<> struct typed_flags<SfxFilterFlags> : is_typed_flags<SfxFilterFlags, 0x331f17ffL> {};
template<> struct typed_flags<SfxFilterFlags> : is_typed_flags<SfxFilterFlags, 0x33df77ffL> {};
}
#define SFX_FILTER_NOTINSTALLED (SfxFilterFlags::MUSTINSTALL | SfxFilterFlags::CONSULTSERVICE)
......
......@@ -1000,6 +1000,7 @@ void SfxFilterContainer::ReadSingleFilter_Impl(
{
sal_Int32 nTmp(0);
lFilterProperties[nFilterProperty].Value >>= nTmp;
assert((nTmp & ~o3tl::typed_flags<SfxFilterFlags>::mask) == 0);
nFlags = static_cast<SfxFilterFlags>(nTmp);
}
else if ( lFilterProperties[nFilterProperty].Name == "UIName" )
......
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