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 @@ ...@@ -125,33 +125,6 @@
#define FLAGNAME_USESOPTIONS "USESOPTIONS" #define FLAGNAME_USESOPTIONS "USESOPTIONS"
#define FLAGNAME_COMBINED "COMBINED" #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. /** @short some uno service names.
*/ */
#define SERVICE_CONFIGURATIONUPDATEACCESS "com.sun.star.configuration.ConfigurationUpdateAccess" #define SERVICE_CONFIGURATIONUPDATEACCESS "com.sun.star.configuration.ConfigurationUpdateAccess"
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include <com/sun/star/util/ChangesEvent.hpp> #include <com/sun/star/util/ChangesEvent.hpp>
#include <com/sun/star/uno/Reference.h> #include <com/sun/star/uno/Reference.h>
#include <com/sun/star/uno/Any.h> #include <com/sun/star/uno/Any.h>
#include <comphelper/documentconstants.hxx>
#include <rtl/ref.hxx> #include <rtl/ref.hxx>
#include <rtl/ustring.hxx> #include <rtl/ustring.hxx>
...@@ -959,10 +960,9 @@ class FilterCache : public BaseLock ...@@ -959,10 +960,9 @@ class FilterCache : public BaseLock
@param lNames @param lNames
the list of flag names. the list of flag names.
@return [sal_Int32] @return the converted flag field.
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 ...@@ -974,7 +974,7 @@ class FilterCache : public BaseLock
@return [seq< string >] @return [seq< string >]
the converted flag name list. 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 } // namespace config
......
...@@ -518,9 +518,9 @@ void TypeDetection::impl_checkResultsAndAddBestFilter(utl::MediaDescriptor& rDes ...@@ -518,9 +518,9 @@ void TypeDetection::impl_checkResultsAndAddBestFilter(utl::MediaDescriptor& rDes
sal_Int32 nFlags = 0; sal_Int32 nFlags = 0;
aFilter[PROPNAME_FLAGS] >>= nFlags; aFilter[PROPNAME_FLAGS] >>= nFlags;
if ((nFlags & FLAGVAL_IMPORT) == FLAGVAL_IMPORT) if (static_cast<SfxFilterFlags>(nFlags) & SfxFilterFlags::IMPORT)
sFilter = *pIt; sFilter = *pIt;
if ((nFlags & FLAGVAL_PREFERRED) == FLAGVAL_PREFERRED) if (static_cast<SfxFilterFlags>(nFlags) & SfxFilterFlags::PREFERED)
break; break;
} }
catch(const css::uno::Exception&) {} catch(const css::uno::Exception&) {}
...@@ -603,7 +603,7 @@ void TypeDetection::impl_checkResultsAndAddBestFilter(utl::MediaDescriptor& rDes ...@@ -603,7 +603,7 @@ void TypeDetection::impl_checkResultsAndAddBestFilter(utl::MediaDescriptor& rDes
sal_Int32 nFlags = 0; sal_Int32 nFlags = 0;
aFilter[PROPNAME_FLAGS] >>= nFlags; aFilter[PROPNAME_FLAGS] >>= nFlags;
if ((nFlags & FLAGVAL_IMPORT) == FLAGVAL_IMPORT) if (static_cast<SfxFilterFlags>(nFlags) & SfxFilterFlags::IMPORT)
break; break;
} }
catch(const css::uno::Exception&) catch(const css::uno::Exception&)
......
...@@ -113,25 +113,28 @@ enum class SfxFilterFlags ...@@ -113,25 +113,28 @@ enum class SfxFilterFlags
EXECUTABLE = 0x00000200L, EXECUTABLE = 0x00000200L,
SUPPORTSSELECTION = 0x00000400L, SUPPORTSSELECTION = 0x00000400L,
NOTINFILEDLG = 0x00001000L, NOTINFILEDLG = 0x00001000L,
NOTINCHOOSER = 0x00002000L,
ASYNCHRON = 0x00004000L,
OPENREADONLY = 0x00010000L, OPENREADONLY = 0x00010000L,
MUSTINSTALL = 0x00020000L, MUSTINSTALL = 0x00020000L,
CONSULTSERVICE = 0x00040000L, CONSULTSERVICE = 0x00040000L,
STARONEFILTER = 0x00080000L, STARONEFILTER = 0x00080000L,
PACKED = 0x00100000L, PACKED = 0x00100000L,
BROWSERPREFERRED = 0x00400000L,
COMBINED = 0x00800000L,
ENCRYPTION = 0x01000000L, ENCRYPTION = 0x01000000L,
PASSWORDTOMODIFY = 0x02000000L, PASSWORDTOMODIFY = 0x02000000L,
PREFERED = 0x10000000L, PREFERED = 0x10000000L,
STARTPRESENTATION = 0x20000000L, STARTPRESENTATION = 0x20000000L,
NONE = 0 NONE = 0
}; };
namespace o3tl 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) #define SFX_FILTER_NOTINSTALLED (SfxFilterFlags::MUSTINSTALL | SfxFilterFlags::CONSULTSERVICE)
......
...@@ -1000,6 +1000,7 @@ void SfxFilterContainer::ReadSingleFilter_Impl( ...@@ -1000,6 +1000,7 @@ void SfxFilterContainer::ReadSingleFilter_Impl(
{ {
sal_Int32 nTmp(0); sal_Int32 nTmp(0);
lFilterProperties[nFilterProperty].Value >>= nTmp; lFilterProperties[nFilterProperty].Value >>= nTmp;
assert((nTmp & ~o3tl::typed_flags<SfxFilterFlags>::mask) == 0);
nFlags = static_cast<SfxFilterFlags>(nTmp); nFlags = static_cast<SfxFilterFlags>(nTmp);
} }
else if ( lFilterProperties[nFilterProperty].Name == "UIName" ) 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