summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Minichmayr <markus@tapkey.com>2022-10-06 08:33:17 +0200
committerAllen Winter <allen.winter@kdab.com>2022-11-22 05:12:15 -0500
commit2fdae45ec8f231bb418238f20556da2ad54d9d17 (patch)
tree2b54f87b94c248d2169aa943710fbd7f60a4364a
parent7834e1c798c00775253c59b5fae366bba3997cab (diff)
downloadlibical-git-2fdae45ec8f231bb418238f20556da2ad54d9d17.tar.gz
Mark mutable global variables as ICAL_GLOBAL_VAR, so we can specify storage modifiers (i.e. thread_local) if necessary.
-rw-r--r--config.h.cmake3
-rw-r--r--src/libical/icalerror.c10
-rw-r--r--src/libical/icalmemory.c20
-rw-r--r--src/libical/icalrecur.c2
-rw-r--r--src/libical/icaltimezone.c16
-rw-r--r--src/libical/icaltypes.c2
-rw-r--r--src/libical/icaltz-util.c2
-rw-r--r--src/libical/pvl.c4
-rw-r--r--src/libical/sspm.c6
9 files changed, 34 insertions, 31 deletions
diff --git a/config.h.cmake b/config.h.cmake
index a4b52aad..0e7306cc 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -582,3 +582,6 @@ typedef ssize_t IO_SSIZE_T;
#define ICALMEMORY_DEFAULT_MALLOC malloc
#define ICALMEMORY_DEFAULT_REALLOC realloc
#define ICALMEMORY_DEFAULT_FREE free
+
+/* ICAL_GLOBAL_VAR is applied to global variables, therefore allows specifying custom storage attributes. */
+#define ICAL_GLOBAL_VAR
diff --git a/src/libical/icalerror.c b/src/libical/icalerror.c
index fedbea9a..9692bd1e 100644
--- a/src/libical/icalerror.c
+++ b/src/libical/icalerror.c
@@ -57,7 +57,7 @@ icalerrorenum *icalerrno_return(void)
#else
-static icalerrorenum icalerrno_storage = ICAL_NO_ERROR;
+static ICAL_GLOBAL_VAR icalerrorenum icalerrno_storage = ICAL_NO_ERROR;
icalerrorenum *icalerrno_return(void)
{
@@ -66,7 +66,7 @@ icalerrorenum *icalerrno_return(void)
#endif
-static int foo;
+static ICAL_GLOBAL_VAR int foo;
void icalerror_stop_here(void)
{
@@ -92,9 +92,9 @@ void icalerror_clear_errno(void)
}
#if ICAL_ERRORS_ARE_FATAL == 1
-static int icalerror_errors_are_fatal = 1;
+static ICAL_GLOBAL_VAR int icalerror_errors_are_fatal = 1;
#else
-static int icalerror_errors_are_fatal = 0;
+static ICAL_GLOBAL_VAR int icalerror_errors_are_fatal = 0;
#endif
void icalerror_set_errors_are_fatal(int fatal)
@@ -127,7 +127,7 @@ struct icalerror_state
icalerrorstate state;
};
-static struct icalerror_state error_state_map[] = {
+static ICAL_GLOBAL_VAR struct icalerror_state error_state_map[] = {
{ICAL_BADARG_ERROR, ICAL_ERROR_DEFAULT},
{ICAL_NEWFAILED_ERROR, ICAL_ERROR_DEFAULT},
{ICAL_ALLOCATION_ERROR, ICAL_ERROR_DEFAULT},
diff --git a/src/libical/icalmemory.c b/src/libical/icalmemory.c
index 7e10c220..f12833b3 100644
--- a/src/libical/icalmemory.c
+++ b/src/libical/icalmemory.c
@@ -43,7 +43,7 @@ typedef struct
/**
* @private
*/
-static buffer_ring *global_buffer_ring = 0;
+static ICAL_GLOBAL_VAR buffer_ring *global_buffer_ring = 0;
#endif
/**
@@ -265,27 +265,27 @@ char *icalmemory_strdup(const char *s)
}
#if defined(MEMORY_CONSISTENCY)
-static icalmemory_malloc_f global_icalmem_malloc = &test_malloc;
+static ICAL_GLOBAL_VAR icalmemory_malloc_f global_icalmem_malloc = &test_malloc;
#elif defined(ICALMEMORY_DEFAULT_MALLOC) && !defined(S_SPLINT_S)
-static icalmemory_malloc_f global_icalmem_malloc = &ICALMEMORY_DEFAULT_MALLOC;
+static ICAL_GLOBAL_VAR icalmemory_malloc_f global_icalmem_malloc = &ICALMEMORY_DEFAULT_MALLOC;
#else
-static icalmemory_malloc_f global_icalmem_malloc = NULL;
+static ICAL_GLOBAL_VAR icalmemory_malloc_f global_icalmem_malloc = NULL;
#endif
#if defined(MEMORY_CONSISTENCY)
-static icalmemory_realloc_f global_icalmem_realloc = &test_realloc;
+static ICAL_GLOBAL_VAR icalmemory_realloc_f global_icalmem_realloc = &test_realloc;
#elif defined(ICALMEMORY_DEFAULT_REALLOC) && !defined(S_SPLINT_S)
-static icalmemory_realloc_f global_icalmem_realloc = &ICALMEMORY_DEFAULT_REALLOC;
+static ICAL_GLOBAL_VAR icalmemory_realloc_f global_icalmem_realloc = &ICALMEMORY_DEFAULT_REALLOC;
#else
-static icalmemory_realloc_f global_icalmem_realloc = NULL;
+static ICAL_GLOBAL_VAR icalmemory_realloc_f global_icalmem_realloc = NULL;
#endif
#if defined(MEMORY_CONSISTENCY)
-static icalmemory_free_f global_icalmem_free = &test_free;
+static ICAL_GLOBAL_VAR icalmemory_free_f global_icalmem_free = &test_free;
#elif defined(ICALMEMORY_DEFAULT_FREE) && !defined(S_SPLINT_S)
-static icalmemory_free_f global_icalmem_free = &ICALMEMORY_DEFAULT_FREE;
+static ICAL_GLOBAL_VAR icalmemory_free_f global_icalmem_free = &ICALMEMORY_DEFAULT_FREE;
#else
-static icalmemory_free_f global_icalmem_free = NULL;
+static ICAL_GLOBAL_VAR icalmemory_free_f global_icalmem_free = NULL;
#endif
void icalmemory_set_mem_alloc_funcs(icalmemory_malloc_f f_malloc,
diff --git a/src/libical/icalrecur.c b/src/libical/icalrecur.c
index 4a135362..b9c7b77d 100644
--- a/src/libical/icalrecur.c
+++ b/src/libical/icalrecur.c
@@ -139,7 +139,7 @@
static pthread_mutex_t invalid_rrule_mutex = PTHREAD_MUTEX_INITIALIZER;
#endif
-static ical_invalid_rrule_handling invalidRruleHandling = ICAL_RRULE_TREAT_AS_ERROR;
+static ICAL_GLOBAL_VAR ical_invalid_rrule_handling invalidRruleHandling = ICAL_RRULE_TREAT_AS_ERROR;
#if defined(HAVE_LIBICU)
#include <unicode/ucal.h>
diff --git a/src/libical/icaltimezone.c b/src/libical/icaltimezone.c
index 9613ab10..60b26a0d 100644
--- a/src/libical/icaltimezone.c
+++ b/src/libical/icaltimezone.c
@@ -67,7 +67,7 @@ static const struct _compat_tzids {
};
/* The prefix to be used for tzid's generated from system tzdata */
-static char s_ical_tzid_prefix[BUILTIN_TZID_PREFIX_LEN] = {0};
+static ICAL_GLOBAL_VAR char s_ical_tzid_prefix[BUILTIN_TZID_PREFIX_LEN] = {0};
/** This is the filename of the file containing the city names and
coordinates of all the builtin timezones. */
@@ -112,17 +112,17 @@ struct _icaltimezonechange
};
/** An array of icaltimezones for the builtin timezones. */
-static icalarray *builtin_timezones = NULL;
+static ICAL_GLOBAL_VAR icalarray *builtin_timezones = NULL;
/** This is the special UTC timezone, which isn't in builtin_timezones. */
-static icaltimezone utc_timezone = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+static ICAL_GLOBAL_VAR icaltimezone utc_timezone = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-static char *zone_files_directory = NULL;
+static ICAL_GLOBAL_VAR char *zone_files_directory = NULL;
#if defined(USE_BUILTIN_TZDATA)
-static int use_builtin_tzdata = 1;
+static ICAL_GLOBAL_VAR int use_builtin_tzdata = 1;
#else
-static int use_builtin_tzdata = 0;
+static ICAL_GLOBAL_VAR int use_builtin_tzdata = 0;
#endif
static void icaltimezone_reset(icaltimezone *zone);
@@ -477,7 +477,7 @@ static void icaltimezone_ensure_coverage(icaltimezone *zone, int end_year)
{
/* When we expand timezone changes we always expand at least up to this
year, plus ICALTIMEZONE_EXTRA_COVERAGE. */
- static int icaltimezone_minimum_expansion_year = -1;
+ static ICAL_GLOBAL_VAR int icaltimezone_minimum_expansion_year = -1;
int changes_end_year;
@@ -2019,7 +2019,7 @@ static const char *get_zone_directory(void)
wchar_t zoneinfodir[1000], dirname[1000];
#endif
int used_default;
- static char *cache = NULL;
+ static ICAL_GLOBAL_VAR char *cache = NULL;
#if !defined(_WIN32_WCE)
unsigned char *dirslash, *zislash, *zislashp1;
diff --git a/src/libical/icaltypes.c b/src/libical/icaltypes.c
index 99cbb42e..95d18540 100644
--- a/src/libical/icaltypes.c
+++ b/src/libical/icaltypes.c
@@ -22,7 +22,7 @@
static pthread_mutex_t unk_token_mutex = PTHREAD_MUTEX_INITIALIZER;
#endif
-static ical_unknown_token_handling unknownTokenHandling = ICAL_TREAT_AS_ERROR;
+static ICAL_GLOBAL_VAR ical_unknown_token_handling unknownTokenHandling = ICAL_TREAT_AS_ERROR;
int icaltriggertype_is_null_trigger(struct icaltriggertype tr)
{
diff --git a/src/libical/icaltz-util.c b/src/libical/icaltz-util.c
index 4c307056..2e6bfce0 100644
--- a/src/libical/icaltz-util.c
+++ b/src/libical/icaltz-util.c
@@ -89,7 +89,7 @@ typedef struct
} tzinfo;
/* fullpath to the system zoneinfo directory (where zone.tab lives) */
-static char s_zoneinfopath[MAXPATHLEN] = {0};
+static ICAL_GLOBAL_VAR char s_zoneinfopath[MAXPATHLEN] = {0};
/* A few well-known locations for system zoneinfo; can be overridden with TZDIR environment */
static const char *s_zoneinfo_search_paths[] = {
diff --git a/src/libical/pvl.c b/src/libical/pvl.c
index a3e9f644..8faaa264 100644
--- a/src/libical/pvl.c
+++ b/src/libical/pvl.c
@@ -43,8 +43,8 @@ static void pvl_global_unlock(void)
* Globals incremented for each call to pvl_new_element(); each list gets a unique id.
*/
-static int pvl_elem_count = 0;
-static int pvl_list_count = 0;
+static ICAL_GLOBAL_VAR int pvl_elem_count = 0;
+static ICAL_GLOBAL_VAR int pvl_list_count = 0;
/**
struct pvl_list_t
diff --git a/src/libical/sspm.c b/src/libical/sspm.c
index ef352c9f..931ced09 100644
--- a/src/libical/sspm.c
+++ b/src/libical/sspm.c
@@ -125,7 +125,7 @@ static char *sspm_strdup(const char *str)
static char *sspm_get_parameter(const char *line, const char *parameter)
{
char *p, *s, *q;
- static char name[1024];
+ static ICAL_GLOBAL_VAR char name[1024];
/* Find where the parameter name is in the line */
p = strstr(line, parameter);
@@ -173,7 +173,7 @@ static char *sspm_get_parameter(const char *line, const char *parameter)
static char *sspm_property_name(const char *line)
{
- static char name[1024];
+ static ICAL_GLOBAL_VAR char name[1024];
char *c = strchr(line, ':');
if (c != 0) {
@@ -187,7 +187,7 @@ static char *sspm_property_name(const char *line)
static char *sspm_value(char *line)
{
- static char value[1024];
+ static ICAL_GLOBAL_VAR char value[1024];
char *c, *s, *p;