45d196c0cc
check pre-decremented value for zero Change-Id: Ib2289cb6064941db2072b2dfbd6ad5f03bcff7aa
270 lines
6 KiB
Diff
270 lines
6 KiB
Diff
--- misc/liblangtag-0.4.0/liblangtag/lt-macros.h
|
|
+++ misc/build/liblangtag-0.4.0/liblangtag/lt-macros.h
|
|
@@ -14,7 +14,9 @@
|
|
#error "Only <liblangtag/langtag.h> can be included directly."
|
|
#endif
|
|
|
|
+#ifndef _WIN32
|
|
#include <sys/param.h>
|
|
+#endif
|
|
|
|
#ifndef __LT_MACROS_H__
|
|
#define __LT_MACROS_H__
|
|
@@ -206,6 +206,14 @@
|
|
|
|
LT_BEGIN_DECLS
|
|
|
|
+#ifdef _MSC_VER
|
|
+#ifdef _M_AMD64
|
|
+typedef signed long long ssize_t;
|
|
+#else
|
|
+typedef signed int ssize_t;
|
|
+#endif
|
|
+#endif
|
|
+
|
|
typedef void * lt_pointer_t;
|
|
typedef int lt_bool_t;
|
|
typedef lt_pointer_t (* lt_copy_func_t) (lt_pointer_t data);
|
|
--- misc/liblangtag-0.4.0/liblangtag/lt-atomic.h
|
|
+++ misc/build/liblangtag-0.4.0/liblangtag/lt-atomic.h
|
|
@@ -17,7 +17,11 @@
|
|
#include "config.h"
|
|
#endif
|
|
|
|
+#if !defined(LT_HAVE_ATOMIC_BUILTINS) && !defined(_WIN32)
|
|
#include <pthread.h>
|
|
+#elif defined(_WIN32)
|
|
+#include <windows.h>
|
|
+#endif
|
|
#include "lt-messages.h"
|
|
|
|
LT_BEGIN_DECLS
|
|
@@ -26,14 +30,40 @@
|
|
LT_INLINE_FUNC int lt_atomic_int_inc (volatile int *v);
|
|
LT_INLINE_FUNC lt_bool_t lt_atomic_int_dec_and_test(volatile int *v);
|
|
|
|
-#ifndef LT_HAVE_ATOMIC_BUILTINS
|
|
+#if !defined(LT_HAVE_ATOMIC_BUILTINS) && !defined(_WIN32)
|
|
static pthread_mutex_t __lt_atomic_lock = PTHREAD_MUTEX_INITIALIZER;
|
|
#endif
|
|
|
|
/*< private >*/
|
|
|
|
/*< public >*/
|
|
-#ifdef LT_HAVE_ATOMIC_BUILTINS
|
|
+#ifdef _WIN32
|
|
+LT_INLINE_FUNC int
|
|
+lt_atomic_int_get(volatile int *v)
|
|
+{
|
|
+ lt_return_val_if_fail (v != NULL, 0);
|
|
+
|
|
+ return (int)InterlockedExchangeAdd((LONG*)v, 0);
|
|
+}
|
|
+
|
|
+LT_INLINE_FUNC int
|
|
+lt_atomic_int_inc(volatile int *v)
|
|
+{
|
|
+ lt_return_val_if_fail (v != NULL, 0);
|
|
+
|
|
+ return (int)InterlockedExchangeAdd((LONG*)v, 1) + 1;
|
|
+}
|
|
+
|
|
+lt_bool_t
|
|
+lt_atomic_int_dec_and_test(volatile int *v)
|
|
+{
|
|
+ lt_return_val_if_fail (v != NULL, FALSE);
|
|
+
|
|
+ return 0 == (InterlockedExchangeAdd((LONG*)v, -1) - 1);
|
|
+}
|
|
+
|
|
+
|
|
+#elif defined(LT_HAVE_ATOMIC_BUILTINS)
|
|
LT_INLINE_FUNC int
|
|
lt_atomic_int_get(volatile int *v)
|
|
{
|
|
--- misc/liblangtag-0.4.0/liblangtag/lt-messages.h
|
|
+++ misc/build/liblangtag-0.4.0/liblangtag/lt-messages.h
|
|
@@ -298,10 +298,17 @@
|
|
_lt_return_after_eval_if_fail(__expr__,__eval__)
|
|
#define lt_return_val_after_eval_if_fail(__expr__,__val__,__eval__) \
|
|
_lt_return_val_after_eval_if_fail(__expr__,__val__,__eval__)
|
|
+#ifdef __GNUC__
|
|
#define lt_warn_if_reached() \
|
|
lt_message_printf(LT_MSG_WARNING, LT_MSG_FLAG_NONE, 0, \
|
|
"(%s:%d): %s: code should not be reached", \
|
|
__FILE__, __LINE__, __PRETTY_FUNCTION__)
|
|
+#else
|
|
+#define lt_warn_if_reached() \
|
|
+ lt_message_printf(LT_MSG_WARNING, LT_MSG_FLAG_NONE, 0, \
|
|
+ "(%s:%d): code should not be reached", \
|
|
+ __FILE__, __LINE__)
|
|
+#endif
|
|
|
|
LT_END_DECLS
|
|
|
|
--- misc/liblangtag-0.4.0/liblangtag/lt-error.c
|
|
+++ misc/build/liblangtag-0.4.0/liblangtag/lt-error.c
|
|
@@ -14,7 +14,9 @@
|
|
#include "config.h"
|
|
#endif
|
|
|
|
+#ifndef _WIN32
|
|
#include <execinfo.h>
|
|
+#endif
|
|
#include <stdlib.h>
|
|
#include "lt-list.h"
|
|
#include "lt-mem.h"
|
|
@@ -120,13 +120,18 @@
|
|
d->message = lt_strdup_vprintf(message, ap);
|
|
va_end(ap);
|
|
|
|
+#ifdef _WIN32
|
|
+ size = 0;
|
|
+#else
|
|
size = backtrace(traces, 1024);
|
|
if (size > 0)
|
|
d->traces = backtrace_symbols(traces, size);
|
|
+#endif
|
|
d->stack_size = size;
|
|
|
|
lt_mem_add_ref(&d->parent, d->message, free);
|
|
- lt_mem_add_ref(&d->parent, d->traces, free);
|
|
+ if (d->traces != NULL)
|
|
+ lt_mem_add_ref(&d->parent, d->traces, free);
|
|
|
|
allocated = (*error)->data == NULL;
|
|
(*error)->data = lt_list_append((*error)->data, d, (lt_destroy_func_t)lt_mem_unref);
|
|
--- misc/liblangtag-0.4.0/liblangtag/lt-ext-module.c
|
|
+++ misc/build/liblangtag-0.4.0/liblangtag/lt-ext-module.c
|
|
@@ -15,11 +15,15 @@
|
|
#endif
|
|
|
|
#include <ctype.h>
|
|
+#ifdef ENABLE_MODULE
|
|
#include <dirent.h>
|
|
+#endif
|
|
#ifdef HAVE_DLFCN_H
|
|
#include <dlfcn.h>
|
|
#endif
|
|
+#ifndef _WIN32
|
|
#include <libgen.h>
|
|
+#endif
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
--- misc/liblangtag-0.4.0/liblangtag/lt-xml.c
|
|
+++ misc/build/liblangtag-0.4.0/liblangtag/lt-xml.c
|
|
@@ -14,7 +14,11 @@
|
|
#include "config.h"
|
|
#endif
|
|
|
|
+#ifndef _WIN32
|
|
#include <pthread.h>
|
|
+#else
|
|
+#include <windows.h>
|
|
+#endif
|
|
#include <sys/stat.h>
|
|
#include <libxml/parser.h>
|
|
#include <libxml/xpath.h>
|
|
@@ -40,7 +44,9 @@
|
|
};
|
|
|
|
static lt_xml_t *__xml = NULL;
|
|
+#ifndef _WIN32
|
|
static pthread_mutex_t __lt_xml_lock = PTHREAD_MUTEX_INITIALIZER;
|
|
+#endif
|
|
|
|
/*< private >*/
|
|
static lt_bool_t
|
|
@@ -309,11 +315,18 @@
|
|
{
|
|
lt_error_t *err = NULL;
|
|
|
|
+#ifdef _WIN32
|
|
+ HANDLE __lt_xml_lock = CreateMutex(NULL, FALSE, NULL);
|
|
+#else
|
|
pthread_mutex_lock(&__lt_xml_lock);
|
|
+#endif
|
|
|
|
if (__xml) {
|
|
+#ifdef _WIN32
|
|
+ ReleaseMutex(__lt_xml_lock);
|
|
+#else
|
|
pthread_mutex_unlock(&__lt_xml_lock);
|
|
-
|
|
+#endif
|
|
return lt_xml_ref(__xml);
|
|
}
|
|
|
|
@@ -389,8 +402,11 @@
|
|
lt_xml_unref(__xml);
|
|
}
|
|
|
|
+#ifdef _WIN32
|
|
+ ReleaseMutex(__lt_xml_lock);
|
|
+#else
|
|
pthread_mutex_unlock(&__lt_xml_lock);
|
|
-
|
|
+#endif
|
|
return __xml;
|
|
}
|
|
|
|
--- misc/liblangtag-0.4.0/liblangtag/lt-messages.c
|
|
+++ misc/build/liblangtag-0.4.0/liblangtag/lt-messages.c
|
|
@@ -17,7 +17,9 @@
|
|
#include "config.h"
|
|
#endif
|
|
|
|
+#ifndef _WIN32
|
|
#include <execinfo.h>
|
|
+#endif
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
@@ -98,6 +98,7 @@
|
|
static void
|
|
_lt_message_stacktrace(void)
|
|
{
|
|
+#ifndef _WIN32
|
|
void *traces[1024];
|
|
char **strings;
|
|
int size, i;
|
|
@@ -119,6 +119,7 @@
|
|
}
|
|
free(strings);
|
|
}
|
|
+#endif
|
|
}
|
|
|
|
static void
|
|
--- misc/liblangtag-0.4.0/liblangtag/lt-string.c
|
|
+++ misc/build/liblangtag-0.4.0/liblangtag/lt-string.c
|
|
@@ -302,8 +302,10 @@
|
|
lt_return_val_if_fail (string != NULL, NULL);
|
|
lt_return_val_if_fail (path != NULL, string);
|
|
|
|
+#ifndef _WIN32
|
|
if (lt_string_length(string) == 0 && path[0] != LT_DIR_SEPARATOR)
|
|
lt_string_append(string, LT_DIR_SEPARATOR_S);
|
|
+#endif
|
|
|
|
va_start(ap, path);
|
|
p = path;
|
|
--- misc/liblangtag-0.4.0/liblangtag/lt-tag.c
|
|
+++ misc/build/liblangtag-0.4.0/liblangtag/lt-tag.c
|
|
@@ -15,9 +15,15 @@
|
|
#endif
|
|
|
|
#include <ctype.h>
|
|
+#ifndef _WIN32
|
|
#include <langinfo.h>
|
|
+#endif
|
|
#include <locale.h>
|
|
+#ifndef HAVE_STDINT_H
|
|
+typedef int int32_t;
|
|
+#else
|
|
#include <stdint.h>
|
|
+#endif
|
|
#include <string.h>
|
|
#include <libxml/xpath.h>
|
|
#include "lt-database.h"
|