|
@@ -57,7 +57,7 @@
|
|
|
#ifdef HAVE_DYNAMIC_PLUGINS
|
|
|
/* Sub-version number
|
|
|
* (only used to avoid breakage in dev version when cache structure changes) */
|
|
|
-#define CACHE_SUBVERSION_NUM 21
|
|
|
+#define CACHE_SUBVERSION_NUM 22
|
|
|
|
|
|
/* Cache filename */
|
|
|
#define CACHE_NAME "plugins.dat"
|
|
@@ -80,7 +80,15 @@ void CacheDelete( vlc_object_t *obj, const char *dir )
|
|
|
|
|
|
#define LOAD_IMMEDIATE(a) \
|
|
|
if (fread (&(a), sizeof (char), sizeof (a), file) != sizeof (a)) \
|
|
|
- goto error
|
|
|
+ goto error
|
|
|
+#define LOAD_FLAG(a) \
|
|
|
+ do { \
|
|
|
+ unsigned char b; \
|
|
|
+ LOAD_IMMEDIATE(b); \
|
|
|
+ if (b > 1) \
|
|
|
+ goto error; \
|
|
|
+ (a) = b; \
|
|
|
+ } while (0)
|
|
|
|
|
|
static int CacheLoadString (char **p, FILE *file)
|
|
|
{
|
|
@@ -115,7 +123,13 @@ error:
|
|
|
|
|
|
static int CacheLoadConfig (module_config_t *cfg, FILE *file)
|
|
|
{
|
|
|
- LOAD_IMMEDIATE (cfg->flags);
|
|
|
+ LOAD_IMMEDIATE (cfg->i_type);
|
|
|
+ LOAD_IMMEDIATE (cfg->i_short);
|
|
|
+ LOAD_FLAG (cfg->b_advanced);
|
|
|
+ LOAD_FLAG (cfg->b_internal);
|
|
|
+ LOAD_FLAG (cfg->b_unsaveable);
|
|
|
+ LOAD_FLAG (cfg->b_safe);
|
|
|
+ LOAD_FLAG (cfg->b_removed);
|
|
|
LOAD_STRING (cfg->psz_type);
|
|
|
LOAD_STRING (cfg->psz_name);
|
|
|
LOAD_STRING (cfg->psz_text);
|
|
@@ -383,6 +397,11 @@ error:
|
|
|
#define SAVE_IMMEDIATE( a ) \
|
|
|
if (fwrite (&(a), sizeof(a), 1, file) != 1) \
|
|
|
goto error
|
|
|
+#define SAVE_FLAG(a) \
|
|
|
+ do { \
|
|
|
+ char b = (a); \
|
|
|
+ LOAD_IMMEDIATE(b); \
|
|
|
+ } while (0)
|
|
|
|
|
|
static int CacheSaveString (FILE *file, const char *str)
|
|
|
{
|
|
@@ -403,7 +422,13 @@ error:
|
|
|
|
|
|
static int CacheSaveConfig (FILE *file, const module_config_t *cfg)
|
|
|
{
|
|
|
- SAVE_IMMEDIATE (cfg->flags);
|
|
|
+ SAVE_IMMEDIATE (cfg->i_type);
|
|
|
+ SAVE_IMMEDIATE (cfg->i_short);
|
|
|
+ SAVE_FLAG (cfg->b_advanced);
|
|
|
+ SAVE_FLAG (cfg->b_internal);
|
|
|
+ SAVE_FLAG (cfg->b_unsaveable);
|
|
|
+ SAVE_FLAG (cfg->b_safe);
|
|
|
+ SAVE_FLAG (cfg->b_removed);
|
|
|
SAVE_STRING (cfg->psz_type);
|
|
|
SAVE_STRING (cfg->psz_name);
|
|
|
SAVE_STRING (cfg->psz_text);
|