summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2013-09-17 17:36:09 +0400
committerIgor Pashev <pashev.igor@gmail.com>2013-09-17 17:36:09 +0400
commit954720f54dd65a5f2100f2e3a193dd3965771c74 (patch)
treeeda9c36f8a39d38a712465e8a1ab315212454f62
parent8957ae6b723a2ec47aad8d1acc57ef17244e03f4 (diff)
downloadqt4-x11-954720f54dd65a5f2100f2e3a193dd3965771c74.tar.gz
Got a few pkgsrc patches
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MachineStackMarker.cpp92
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MarkedSpace.cpp37
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MarkedSpace.h12
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs.cpp15
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_parser_JSParser.cpp15
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Atomics.h41
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_HashSet.h104
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_MathExtras.h13
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_NullPtr.h20
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_RefCountedLeakCounter.h13
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_StringImpl.h13
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_ThreadSafeRefCounted.h22
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Threading.h13
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_dom_Element.cpp13
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_features.pri17
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_DefaultLocalizationStrategy.cpp18
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_Timer.cpp248
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_Timer.h18
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_graphics_MediaPlayer.cpp14
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_network_qt_QNetworkReplyHandler.cpp73
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_qt_PlatformKeyboardEventQt.cpp13
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebKit_qt_Api_qgraphicswebview.cpp22
-rw-r--r--debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebKit_qt_WebCoreSupport_NotificationPresenterClientQt.cpp28
-rw-r--r--debian/patches/series27
24 files changed, 901 insertions, 0 deletions
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MachineStackMarker.cpp b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MachineStackMarker.cpp
new file mode 100644
index 0000000..84c66e7
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MachineStackMarker.cpp
@@ -0,0 +1,92 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MachineStackMarker.cpp,v 1.2 2012/04/09 09:12:49 adam Exp $
+
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/heap/MachineStackMarker.cpp.orig 2012-03-14 14:01:26.000000000 +0000
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/heap/MachineStackMarker.cpp
+@@ -20,6 +20,9 @@
+ */
+
+ #include "config.h"
++#if OS(SOLARIS)
++#undef _FILE_OFFSET_BITS
++#endif
+ #include "MachineStackMarker.h"
+
+ #include "ConservativeRoots.h"
+@@ -64,6 +67,10 @@
+ #include <unistd.h>
+
+ #if OS(SOLARIS)
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
++#include <procfs.h>
+ #include <thread.h>
+ #else
+ #include <pthread.h>
+@@ -341,6 +348,7 @@ typedef pthread_attr_t PlatformThreadReg
+ #error Need a thread register struct for this platform
+ #endif
+
++#if !OS(SOLARIS)
+ static size_t getPlatformThreadRegisters(const PlatformThread& platformThread, PlatformThreadRegisters& regs)
+ {
+ #if OS(DARWIN)
+@@ -391,6 +399,7 @@ static size_t getPlatformThreadRegisters
+ #error Need a way to get thread registers on this platform
+ #endif
+ }
++#endif
+
+ static inline void* otherThreadStackPointer(const PlatformThreadRegisters& regs)
+ {
+@@ -441,6 +450,7 @@ static inline void* otherThreadStackPoin
+ #endif
+ }
+
++#if !OS(SOLARIS)
+ static void freePlatformThreadRegisters(PlatformThreadRegisters& regs)
+ {
+ #if USE(PTHREADS) && !OS(WINDOWS) && !OS(DARWIN)
+@@ -449,24 +459,40 @@ static void freePlatformThreadRegisters(
+ UNUSED_PARAM(regs);
+ #endif
+ }
++#endif
+
+ void MachineThreads::gatherFromOtherThread(ConservativeRoots& conservativeRoots, Thread* thread)
+ {
+ suspendThread(thread->platformThread);
+
++#if OS(SOLARIS)
++ struct lwpstatus lwp;
++ char procfile[64];
++ int fd;
++ snprintf(procfile, 64, "/proc/self/lwp/%u/lwpstatus", thread->platformThread);
++ fd = open(procfile, O_RDONLY, 0);
++ if (fd == -1) {
++ fprintf(stderr, "%s: %s\n", procfile, strerror(errno));
++ abort();
++ }
++ pread(fd, &lwp, sizeof(lwp), 0);
++ close(fd);
++ void* stackPointer = (void*)lwp.pr_reg[REG_SP];
++#else
+ PlatformThreadRegisters regs;
+ size_t regSize = getPlatformThreadRegisters(thread->platformThread, regs);
+
+ conservativeRoots.add(static_cast<void*>(&regs), static_cast<void*>(reinterpret_cast<char*>(&regs) + regSize));
+
+ void* stackPointer = otherThreadStackPointer(regs);
++
++ freePlatformThreadRegisters(regs);
++#endif
+ void* stackBase = thread->stackBase;
+ swapIfBackwards(stackPointer, stackBase);
+ conservativeRoots.add(stackPointer, stackBase);
+
+ resumeThread(thread->platformThread);
+-
+- freePlatformThreadRegisters(regs);
+ }
+
+ #endif
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MarkedSpace.cpp b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MarkedSpace.cpp
new file mode 100644
index 0000000..2c1a07b
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MarkedSpace.cpp
@@ -0,0 +1,37 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MarkedSpace.cpp,v 1.1 2013/05/09 14:07:08 joerg Exp $
+
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/heap/MarkedSpace.cpp.orig 2013-05-08 14:48:50.000000000 +0000
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/heap/MarkedSpace.cpp
+@@ -124,8 +124,8 @@ void MarkedSpace::sweep()
+ size_t MarkedSpace::objectCount() const
+ {
+ size_t result = 0;
+- BlockIterator end = m_blocks.end();
+- for (BlockIterator it = m_blocks.begin(); it != end; ++it)
++ ConstBlockIterator end = m_blocks.end();
++ for (ConstBlockIterator it = m_blocks.begin(); it != end; ++it)
+ result += (*it)->markCount();
+ return result;
+ }
+@@ -133,8 +133,8 @@ size_t MarkedSpace::objectCount() const
+ size_t MarkedSpace::size() const
+ {
+ size_t result = 0;
+- BlockIterator end = m_blocks.end();
+- for (BlockIterator it = m_blocks.begin(); it != end; ++it)
++ ConstBlockIterator end = m_blocks.end();
++ for (ConstBlockIterator it = m_blocks.begin(); it != end; ++it)
+ result += (*it)->size();
+ return result;
+ }
+@@ -142,8 +142,8 @@ size_t MarkedSpace::size() const
+ size_t MarkedSpace::capacity() const
+ {
+ size_t result = 0;
+- BlockIterator end = m_blocks.end();
+- for (BlockIterator it = m_blocks.begin(); it != end; ++it)
++ ConstBlockIterator end = m_blocks.end();
++ for (ConstBlockIterator it = m_blocks.begin(); it != end; ++it)
+ result += (*it)->capacity();
+ return result;
+ }
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MarkedSpace.h b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MarkedSpace.h
new file mode 100644
index 0000000..7f62c8c
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MarkedSpace.h
@@ -0,0 +1,12 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MarkedSpace.h,v 1.1 2013/05/09 14:07:08 joerg Exp $
+
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/heap/MarkedSpace.h.orig 2013-05-08 14:49:13.000000000 +0000
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/heap/MarkedSpace.h
+@@ -92,6 +92,7 @@ namespace JSC {
+ static const size_t impreciseCount = impreciseCutoff / impreciseStep - 1;
+
+ typedef HashSet<MarkedBlock*>::iterator BlockIterator;
++ typedef HashSet<MarkedBlock*>::const_iterator ConstBlockIterator;
+
+ struct SizeClass {
+ SizeClass();
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs.cpp b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs.cpp
new file mode 100644
index 0000000..06df248
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs.cpp
@@ -0,0 +1,15 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs.cpp,v 1.2 2012/02/16 20:42:46 hans Exp $
+
+Fix building on NetBSD/amd64 with GCC.
+
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/jit/JITStubs.cpp.orig 2012-01-16 06:31:42.000000000 +0000
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/jit/JITStubs.cpp
+@@ -79,7 +79,7 @@ namespace JSC {
+ #define THUMB_FUNC_PARAM(name)
+ #endif
+
+-#if (OS(LINUX) || OS(FREEBSD)) && CPU(X86_64)
++#if (OS(LINUX) || OS(FREEBSD) || OS(NETBSD) || OS(SOLARIS)) && CPU(X86_64) || (OS(SOLARIS) && CPU(X86))
+ #define SYMBOL_STRING_RELOCATION(name) #name "@plt"
+ #elif OS(DARWIN) || (CPU(X86_64) && COMPILER(MINGW) && !GCC_VERSION_AT_LEAST(4, 5, 0))
+ #define SYMBOL_STRING_RELOCATION(name) "_" #name
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_parser_JSParser.cpp b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_parser_JSParser.cpp
new file mode 100644
index 0000000..2961dbe
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_parser_JSParser.cpp
@@ -0,0 +1,15 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_parser_JSParser.cpp,v 1.1 2013/05/09 14:07:08 joerg Exp $
+
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/parser/JSParser.cpp.orig 2013-05-08 15:01:59.000000000 +0000
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/parser/JSParser.cpp
+@@ -453,8 +453,8 @@ private:
+
+ void copyCapturedVariablesToVector(const IdentifierSet& capturedVariables, Vector<RefPtr<StringImpl> >& vector)
+ {
+- IdentifierSet::iterator end = capturedVariables.end();
+- for (IdentifierSet::iterator it = capturedVariables.begin(); it != end; ++it) {
++ IdentifierSet::const_iterator end = capturedVariables.end();
++ for (IdentifierSet::const_iterator it = capturedVariables.begin(); it != end; ++it) {
+ if (m_declaredVariables.contains(*it))
+ continue;
+ vector.append(*it);
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Atomics.h b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Atomics.h
new file mode 100644
index 0000000..1838f62
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Atomics.h
@@ -0,0 +1,41 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Atomics.h,v 1.2 2013/07/07 18:13:56 adam Exp $
+
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Atomics.h.orig 2013-06-07 05:16:54.000000000 +0000
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Atomics.h
+@@ -69,6 +69,8 @@
+ #include <cutils/atomic.h>
+ #elif OS(QNX)
+ #include <atomic.h>
++#elif __cplusplus >= 201103L
++#include <atomic>
+ #elif COMPILER(GCC) && !OS(SYMBIAN)
+ #if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 2))
+ #include <ext/atomicity.h>
+@@ -106,6 +108,11 @@ inline int atomicDecrement(int volatile*
+ inline int atomicIncrement(int volatile* addend) { return (int) atomic_add_value((unsigned int volatile*)addend, 1); }
+ inline int atomicDecrement(int volatile* addend) { return (int) atomic_sub_value((unsigned int volatile*)addend, 1); }
+
++#elif __cplusplus >= 201103L
++#define WTF_USE_LOCKFREE_THREADSAFEREFCOUNTED 1
++inline int atomicIncrement(std::atomic<int> * addend) { return *addend++; }
++inline int atomicDecrement(std::atomic<int> * addend) { return *addend--; }
++
+ #elif COMPILER(GCC) && !CPU(SPARC64) && !OS(SYMBIAN) // sizeof(_Atomic_word) != sizeof(int) on sparc64 gcc
+ #define WTF_USE_LOCKFREE_THREADSAFEREFCOUNTED 1
+
+@@ -114,9 +121,15 @@ inline int atomicDecrement(int volatile*
+
+ #endif
+
++#if !OS(DARWIN) && __cplusplus >= 201103L
++typedef std::atomic<int> atomic_int;
++#else
++typedef int volatile atomic_int;
++#endif
+ } // namespace WTF
+
+ #if USE(LOCKFREE_THREADSAFEREFCOUNTED)
++using WTF::atomic_int;
+ using WTF::atomicDecrement;
+ using WTF::atomicIncrement;
+ #endif
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_HashSet.h b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_HashSet.h
new file mode 100644
index 0000000..8ca4bb6
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_HashSet.h
@@ -0,0 +1,104 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_HashSet.h,v 1.1 2013/05/09 14:07:08 joerg Exp $
+
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/HashSet.h.orig 2013-05-08 14:26:07.000000000 +0000
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/HashSet.h
+@@ -49,7 +49,7 @@ namespace WTF {
+ HashFunctions, ValueTraits, ValueTraits> HashTableType;
+
+ public:
+- typedef HashTableConstIteratorAdapter<HashTableType, ValueType> iterator;
++ typedef HashTableIteratorAdapter<HashTableType, ValueType> iterator;
+ typedef HashTableConstIteratorAdapter<HashTableType, ValueType> const_iterator;
+
+ void swap(HashSet&);
+@@ -58,10 +58,14 @@ namespace WTF {
+ int capacity() const;
+ bool isEmpty() const;
+
+- iterator begin() const;
+- iterator end() const;
++ iterator begin();
++ iterator end();
+
+- iterator find(const ValueType&) const;
++ const_iterator begin() const;
++ const_iterator end() const;
++
++ iterator find(const ValueType&);
++ const_iterator find(const ValueType&) const;
+ bool contains(const ValueType&) const;
+
+ // An alternate version of find() that finds the object by hashing and comparing
+@@ -69,7 +73,8 @@ namespace WTF {
+ // must have the following function members:
+ // static unsigned hash(const T&);
+ // static bool equal(const ValueType&, const T&);
+- template<typename T, typename HashTranslator> iterator find(const T&) const;
++ template<typename T, typename HashTranslator> iterator find(const T&);
++ template<typename T, typename HashTranslator> const_iterator find(const T&) const;
+ template<typename T, typename HashTranslator> bool contains(const T&) const;
+
+ // The return value is a pair of an interator to the new value's location,
+@@ -134,19 +139,37 @@ namespace WTF {
+ }
+
+ template<typename T, typename U, typename V>
+- inline typename HashSet<T, U, V>::iterator HashSet<T, U, V>::begin() const
++ inline typename HashSet<T, U, V>::iterator HashSet<T, U, V>::begin()
+ {
+ return m_impl.begin();
+ }
+
+ template<typename T, typename U, typename V>
+- inline typename HashSet<T, U, V>::iterator HashSet<T, U, V>::end() const
++ inline typename HashSet<T, U, V>::const_iterator HashSet<T, U, V>::begin() const
++ {
++ return m_impl.begin();
++ }
++
++ template<typename T, typename U, typename V>
++ inline typename HashSet<T, U, V>::iterator HashSet<T, U, V>::end()
+ {
+ return m_impl.end();
+ }
+
+ template<typename T, typename U, typename V>
+- inline typename HashSet<T, U, V>::iterator HashSet<T, U, V>::find(const ValueType& value) const
++ inline typename HashSet<T, U, V>::const_iterator HashSet<T, U, V>::end() const
++ {
++ return m_impl.end();
++ }
++
++ template<typename T, typename U, typename V>
++ inline typename HashSet<T, U, V>::iterator HashSet<T, U, V>::find(const ValueType& value)
++ {
++ return m_impl.find(value);
++ }
++
++ template<typename T, typename U, typename V>
++ inline typename HashSet<T, U, V>::const_iterator HashSet<T, U, V>::find(const ValueType& value) const
+ {
+ return m_impl.find(value);
+ }
+@@ -160,10 +183,21 @@ namespace WTF {
+ template<typename Value, typename HashFunctions, typename Traits>
+ template<typename T, typename HashTranslator>
+ typename HashSet<Value, HashFunctions, Traits>::iterator
++ inline HashSet<Value, HashFunctions, Traits>::find(const T& value)
++ {
++ typedef HashSetTranslatorAdapter<ValueType, ValueTraits, T, HashTranslator> Adapter;
++ return m_impl.template find<T, Adapter>(value);
++
++ }
++
++ template<typename Value, typename HashFunctions, typename Traits>
++ template<typename T, typename HashTranslator>
++ typename HashSet<Value, HashFunctions, Traits>::const_iterator
+ inline HashSet<Value, HashFunctions, Traits>::find(const T& value) const
+ {
+ typedef HashSetTranslatorAdapter<ValueType, ValueTraits, T, HashTranslator> Adapter;
+ return m_impl.template find<T, Adapter>(value);
++
+ }
+
+ template<typename Value, typename HashFunctions, typename Traits>
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_MathExtras.h b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_MathExtras.h
new file mode 100644
index 0000000..8693e68
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_MathExtras.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_MathExtras.h,v 1.2 2012/04/09 09:12:49 adam Exp $
+
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/MathExtras.h.orig 2011-12-08 06:06:02.000000000 +0100
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/MathExtras.h 2012-01-15 01:09:37.169459335 +0100
+@@ -252,7 +252,7 @@ inline int clampToInteger(unsigned value
+ return static_cast<int>(std::min(value, static_cast<unsigned>(std::numeric_limits<int>::max())));
+ }
+
+-#if !COMPILER(MSVC) && !(COMPILER(RVCT) && PLATFORM(BREWMP)) && !OS(SOLARIS) && !OS(SYMBIAN)
++#if !COMPILER(MSVC) && !(COMPILER(RVCT) && PLATFORM(BREWMP)) && !(OS(SOLARIS) && COMPILER(GCC) && (GCC_VERSION < 40600)) && !OS(SYMBIAN)
+ using std::isfinite;
+ using std::isinf;
+ using std::isnan;
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_NullPtr.h b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_NullPtr.h
new file mode 100644
index 0000000..0c035e0
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_NullPtr.h
@@ -0,0 +1,20 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_NullPtr.h,v 1.2 2013/07/07 18:13:56 adam Exp $
+
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h.orig 2013-06-07 05:16:54.000000000 +0000
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/NullPtr.h
+@@ -35,8 +35,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
+ #define __has_feature(feature) 0
+ #endif
+
+-#if __has_feature(cxx_nullptr) || (GCC_VERSION_AT_LEAST(4, 6, 0) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && _MSC_VER >= 1600 && !COMPILER(INTEL))
++#if __has_feature(cxx_nullptr) || (GCC_VERSION_AT_LEAST(4, 6, 0) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (defined(_MSC_VER) && _MSC_VER >= 1600 && !COMPILER(INTEL)) || defined(_LIBCPP_VERSION)
+
++#if defined(__clang__) && !defined(_LIBCPP_VERSION)
++namespace std
++{
++ typedef decltype(nullptr) nullptr_t;
++}
++#endif
+ #define HAVE_NULLPTR 1
+
+ #else
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_RefCountedLeakCounter.h b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_RefCountedLeakCounter.h
new file mode 100644
index 0000000..6baaccb
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_RefCountedLeakCounter.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_RefCountedLeakCounter.h,v 1.1 2013/05/09 14:07:08 joerg Exp $
+
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/RefCountedLeakCounter.h.orig 2013-05-08 13:34:56.000000000 +0000
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/RefCountedLeakCounter.h
+@@ -38,7 +38,7 @@ namespace WTF {
+
+ #ifndef NDEBUG
+ private:
+- volatile int m_count;
++ atomic_int m_count;
+ const char* m_description;
+ #endif
+ };
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_StringImpl.h b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_StringImpl.h
new file mode 100644
index 0000000..8df7c05
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_StringImpl.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_StringImpl.h,v 1.1 2012/07/25 11:40:50 fhajny Exp $
+
+Fix for GCC 4.7.
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.h.orig 2011-12-08 05:06:02.000000000 +0000
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringImpl.h
+@@ -24,6 +24,7 @@
+ #define StringImpl_h
+
+ #include <limits.h>
++#include <unistd.h>
+ #include <wtf/ASCIICType.h>
+ #include <wtf/CrossThreadRefCounted.h>
+ #include <wtf/Forward.h>
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_ThreadSafeRefCounted.h b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_ThreadSafeRefCounted.h
new file mode 100644
index 0000000..962c988
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_ThreadSafeRefCounted.h
@@ -0,0 +1,22 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_ThreadSafeRefCounted.h,v 1.1 2013/05/09 14:07:08 joerg Exp $
+
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/ThreadSafeRefCounted.h.orig 2013-05-08 13:26:56.000000000 +0000
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/ThreadSafeRefCounted.h
+@@ -96,7 +96,7 @@ public:
+ #if !USE(LOCKFREE_THREADSAFEREFCOUNTED)
+ MutexLocker locker(m_mutex);
+ #endif
+- return static_cast<int const volatile &>(m_refCount);
++ return m_refCount;
+ }
+
+ protected:
+@@ -126,7 +126,7 @@ private:
+ template<class T>
+ friend class CrossThreadRefCounted;
+
+- int m_refCount;
++ atomic_int m_refCount;
+ #if !USE(LOCKFREE_THREADSAFEREFCOUNTED)
+ mutable Mutex m_mutex;
+ #endif
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Threading.h b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Threading.h
new file mode 100644
index 0000000..a3396c8
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Threading.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Threading.h,v 1.2 2013/05/09 14:07:08 joerg Exp $
+
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Threading.h.orig 2012-11-23 10:10:05.000000000 +0000
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Threading.h
+@@ -113,6 +113,8 @@ using WTF::createThread;
+ using WTF::currentThread;
+ using WTF::detachThread;
+ using WTF::waitForThreadCompletion;
++#if !OS(SOLARIS)
+ using WTF::yield;
++#endif
+
+ #endif // Threading_h
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_dom_Element.cpp b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_dom_Element.cpp
new file mode 100644
index 0000000..3d0a601
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_dom_Element.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_WebCore_dom_Element.cpp,v 1.1 2013/08/29 13:00:41 joerg Exp $
+
+--- a/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp.orig 2013-07-12 11:02:45.000000000 +0000
++++ b/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp
+@@ -1080,7 +1080,7 @@ void Element::recalcStyle(StyleChange ch
+ {
+ // Ref currentStyle in case it would otherwise be deleted when setRenderStyle() is called.
+ RefPtr<RenderStyle> currentStyle(renderStyle());
+- bool hasParentStyle = parentNodeForRenderingAndStyle() ? parentNodeForRenderingAndStyle()->renderStyle() : false;
++ bool hasParentStyle = parentNodeForRenderingAndStyle() ? parentNodeForRenderingAndStyle()->renderStyle() != NULL : false;
+ bool hasDirectAdjacentRules = currentStyle && currentStyle->childrenAffectedByDirectAdjacentRules();
+ bool hasIndirectAdjacentRules = currentStyle && currentStyle->childrenAffectedByForwardPositionalRules();
+
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_features.pri b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_features.pri
new file mode 100644
index 0000000..e90baeb
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_features.pri
@@ -0,0 +1,17 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_WebCore_features.pri,v 1.1 2012/01/12 22:59:58 adam Exp $
+
+Mac OS X: Problem linking with QTKit enabled.
+
+--- a/src/3rdparty/webkit/Source/WebCore/features.pri.orig 2012-01-08 11:13:53.000000000 +0000
++++ b/src/3rdparty/webkit/Source/WebCore/features.pri
+@@ -165,8 +165,8 @@ symbian|maemo5|maemo6 {
+ mac:!contains(DEFINES, USE_QTMULTIMEDIA=1) {
+ DEFINES -= ENABLE_VIDEO=0
+ DEFINES += ENABLE_VIDEO=1
+- DEFINES += WTF_USE_QTKIT=1
+- DEFINES -= WTF_USE_QTKIT=0
++ DEFINES -= WTF_USE_QTKIT=1
++ DEFINES += WTF_USE_QTKIT=0
+ } else: linux-*:!contains(DEFINES, USE_QTMULTIMEDIA=1) {
+ !contains(QT_CONFIG, no-pkg-config):system(pkg-config --exists glib-2.0 gio-2.0 gstreamer-0.10): {
+ DEFINES -= ENABLE_VIDEO=0
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_DefaultLocalizationStrategy.cpp b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_DefaultLocalizationStrategy.cpp
new file mode 100644
index 0000000..30bdf24
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_DefaultLocalizationStrategy.cpp
@@ -0,0 +1,18 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_WebCore_platform_DefaultLocalizationStrategy.cpp,v 1.2 2012/02/26 22:16:16 adam Exp $
+
+Fix C++ error.
+
+--- a/src/3rdparty/webkit/Source/WebCore/platform/DefaultLocalizationStrategy.cpp.orig 2012-01-12 19:51:48.000000000 +0100
++++ b/src/3rdparty/webkit/Source/WebCore/platform/DefaultLocalizationStrategy.cpp 2012-01-12 20:07:06.000000000 +0100
+@@ -59,7 +59,11 @@
+ return result.get();
+ #elif PLATFORM(QT)
+ va_list arguments;
++#ifdef __clang__
++ va_start(arguments, format.charactersWithNullTermination());
++#else
+ va_start(arguments, format);
++#endif
+ QString result;
+ result.vsprintf(format.latin1().data(), arguments);
+ va_end(arguments);
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_Timer.cpp b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_Timer.cpp
new file mode 100644
index 0000000..dd9da09
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_Timer.cpp
@@ -0,0 +1,248 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_WebCore_platform_Timer.cpp,v 1.1 2013/05/09 14:07:08 joerg Exp $
+
+Upstream changeset 92556
+
+--- a/src/3rdparty/webkit/Source/WebCore/platform/Timer.cpp.orig 2012-11-23 10:09:58.000000000 +0000
++++ b/src/3rdparty/webkit/Source/WebCore/platform/Timer.cpp
+@@ -41,6 +41,8 @@ using namespace std;
+
+ namespace WebCore {
+
++class TimerHeapReference;
++
+ // Timers are stored in a heap data structure, used to implement a priority queue.
+ // This allows us to efficiently determine which timer needs to fire the soonest.
+ // Then we set a single shared system timer to fire at that time.
+@@ -53,110 +55,138 @@ static Vector<TimerBase*>& timerHeap()
+ return threadGlobalData().threadTimers().timerHeap();
+ }
+
+-// Class to represent elements in the heap when calling the standard library heap algorithms.
+-// Maintains the m_heapIndex value in the timers themselves, which allows us to do efficient
+-// modification of the heap.
+-class TimerHeapElement {
+-public:
+- explicit TimerHeapElement(int i)
+- : m_index(i)
+- , m_timer(timerHeap()[m_index])
+- {
+- checkConsistency();
+- }
+-
+- TimerHeapElement(const TimerHeapElement&);
+- TimerHeapElement& operator=(const TimerHeapElement&);
+-
+- TimerBase* timer() const { return m_timer; }
+-
+- void checkConsistency() const
+- {
+- ASSERT(m_index >= 0);
+- ASSERT(m_index < static_cast<int>(timerHeap().size()));
+- }
++// ----------------
+
++class TimerHeapPointer {
++public:
++ TimerHeapPointer(TimerBase** pointer) : m_pointer(pointer) { }
++ TimerHeapReference operator*() const;
++ TimerBase* operator->() const { return *m_pointer; }
+ private:
+- TimerHeapElement();
++ TimerBase** m_pointer;
++};
+
+- int m_index;
+- TimerBase* m_timer;
++class TimerHeapReference {
++public:
++ TimerHeapReference(TimerBase*& reference) : m_reference(reference) { }
++ operator TimerBase*() const { return m_reference; }
++ TimerHeapPointer operator&() const { return &m_reference; }
++ TimerHeapReference& operator=(TimerBase*);
++ TimerHeapReference& operator=(TimerHeapReference);
++private:
++ TimerBase*& m_reference;
+ };
+
+-inline TimerHeapElement::TimerHeapElement(const TimerHeapElement& o)
+- : m_index(-1), m_timer(o.timer())
++inline TimerHeapReference TimerHeapPointer::operator*() const
+ {
++ return *m_pointer;
+ }
+
+-inline TimerHeapElement& TimerHeapElement::operator=(const TimerHeapElement& o)
++inline TimerHeapReference& TimerHeapReference::operator=(TimerBase* timer)
+ {
+- TimerBase* t = o.timer();
+- m_timer = t;
+- if (m_index != -1) {
+- checkConsistency();
+- timerHeap()[m_index] = t;
+- t->m_heapIndex = m_index;
+- }
++ m_reference = timer;
++ Vector<TimerBase*>& heap = timerHeap();
++ if (&m_reference >= heap.data() && &m_reference < heap.data() + heap.size())
++ timer->m_heapIndex = &m_reference - heap.data();
+ return *this;
+ }
+
+-inline bool operator<(const TimerHeapElement& a, const TimerHeapElement& b)
++inline TimerHeapReference& TimerHeapReference::operator=(TimerHeapReference b)
+ {
+- // The comparisons below are "backwards" because the heap puts the largest
+- // element first and we want the lowest time to be the first one in the heap.
+- double aFireTime = a.timer()->m_nextFireTime;
+- double bFireTime = b.timer()->m_nextFireTime;
+- if (bFireTime != aFireTime)
+- return bFireTime < aFireTime;
+-
+- // We need to look at the difference of the insertion orders instead of comparing the two
+- // outright in case of overflow.
+- unsigned difference = a.timer()->m_heapInsertionOrder - b.timer()->m_heapInsertionOrder;
+- return difference < UINT_MAX / 2;
++ TimerBase* timer = b;
++ return *this = timer;
++}
++
++inline void swap(TimerHeapReference a, TimerHeapReference b)
++{
++ TimerBase* timerA = a;
++ TimerBase* timerB = b;
++
++ // Invoke the assignment operator, since that takes care of updating m_heapIndex.
++ a = timerB;
++ b = timerA;
+ }
+
+ // ----------------
+
+ // Class to represent iterators in the heap when calling the standard library heap algorithms.
+-// Returns TimerHeapElement for elements in the heap rather than the TimerBase pointers themselves.
+-class TimerHeapIterator : public iterator<random_access_iterator_tag, TimerHeapElement, int> {
++// Uses a custom pointer and reference type that update indices for pointers in the heap.
++class TimerHeapIterator : public iterator<random_access_iterator_tag, TimerBase*, ptrdiff_t, TimerHeapPointer, TimerHeapReference> {
+ public:
+- TimerHeapIterator() : m_index(-1) { }
+- TimerHeapIterator(int i) : m_index(i) { checkConsistency(); }
+-
+- TimerHeapIterator& operator++() { checkConsistency(); ++m_index; checkConsistency(); return *this; }
+- TimerHeapIterator operator++(int) { checkConsistency(); checkConsistency(1); return m_index++; }
++ explicit TimerHeapIterator(TimerBase** pointer) : m_pointer(pointer) { checkConsistency(); }
+
+- TimerHeapIterator& operator--() { checkConsistency(); --m_index; checkConsistency(); return *this; }
+- TimerHeapIterator operator--(int) { checkConsistency(); checkConsistency(-1); return m_index--; }
++ TimerHeapIterator& operator++() { checkConsistency(); ++m_pointer; checkConsistency(); return *this; }
++ TimerHeapIterator operator++(int) { checkConsistency(1); return TimerHeapIterator(m_pointer++); }
+
+- TimerHeapIterator& operator+=(int i) { checkConsistency(); m_index += i; checkConsistency(); return *this; }
+- TimerHeapIterator& operator-=(int i) { checkConsistency(); m_index -= i; checkConsistency(); return *this; }
++ TimerHeapIterator& operator--() { checkConsistency(); --m_pointer; checkConsistency(); return *this; }
++ TimerHeapIterator operator--(int) { checkConsistency(-1); return TimerHeapIterator(m_pointer--); }
+
+- TimerHeapElement operator*() const { return TimerHeapElement(m_index); }
+- TimerHeapElement operator[](int i) const { return TimerHeapElement(m_index + i); }
++ TimerHeapIterator& operator+=(ptrdiff_t i) { checkConsistency(); m_pointer += i; checkConsistency(); return *this; }
++ TimerHeapIterator& operator-=(ptrdiff_t i) { checkConsistency(); m_pointer -= i; checkConsistency(); return *this; }
+
+- int index() const { return m_index; }
++ TimerHeapReference operator*() const { return TimerHeapReference(*m_pointer); }
++ TimerHeapReference operator[](ptrdiff_t i) const { return TimerHeapReference(m_pointer[i]); }
++ TimerBase* operator->() const { return *m_pointer; }
+
+- void checkConsistency(int offset = 0) const
++private:
++ void checkConsistency(ptrdiff_t offset = 0) const
+ {
+- ASSERT_UNUSED(offset, m_index + offset >= 0);
+- ASSERT_UNUSED(offset, m_index + offset <= static_cast<int>(timerHeap().size()));
++ ASSERT(m_pointer >= timerHeap().data());
++ ASSERT(m_pointer <= timerHeap().data() + timerHeap().size());
++ ASSERT_UNUSED(offset, m_pointer + offset >= timerHeap().data());
++ ASSERT_UNUSED(offset, m_pointer + offset <= timerHeap().data() + timerHeap().size());
+ }
+
+-private:
+- int m_index;
++ friend bool operator==(TimerHeapIterator, TimerHeapIterator);
++ friend bool operator!=(TimerHeapIterator, TimerHeapIterator);
++ friend bool operator<(TimerHeapIterator, TimerHeapIterator);
++ friend bool operator>(TimerHeapIterator, TimerHeapIterator);
++ friend bool operator<=(TimerHeapIterator, TimerHeapIterator);
++ friend bool operator>=(TimerHeapIterator, TimerHeapIterator);
++
++ friend TimerHeapIterator operator+(TimerHeapIterator, size_t);
++ friend TimerHeapIterator operator+(size_t, TimerHeapIterator);
++
++ friend TimerHeapIterator operator-(TimerHeapIterator, size_t);
++ friend ptrdiff_t operator-(TimerHeapIterator, TimerHeapIterator);
++
++ TimerBase** m_pointer;
+ };
+
+-inline bool operator==(TimerHeapIterator a, TimerHeapIterator b) { return a.index() == b.index(); }
+-inline bool operator!=(TimerHeapIterator a, TimerHeapIterator b) { return a.index() != b.index(); }
+-inline bool operator<(TimerHeapIterator a, TimerHeapIterator b) { return a.index() < b.index(); }
++inline bool operator==(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer == b.m_pointer; }
++inline bool operator!=(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer != b.m_pointer; }
++inline bool operator<(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer < b.m_pointer; }
++inline bool operator>(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer > b.m_pointer; }
++inline bool operator<=(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer <= b.m_pointer; }
++inline bool operator>=(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer >= b.m_pointer; }
++
++inline TimerHeapIterator operator+(TimerHeapIterator a, size_t b) { return TimerHeapIterator(a.m_pointer + b); }
++inline TimerHeapIterator operator+(size_t a, TimerHeapIterator b) { return TimerHeapIterator(a + b.m_pointer); }
+
+-inline TimerHeapIterator operator+(TimerHeapIterator a, int b) { return a.index() + b; }
+-inline TimerHeapIterator operator+(int a, TimerHeapIterator b) { return a + b.index(); }
++inline TimerHeapIterator operator-(TimerHeapIterator a, size_t b) { return TimerHeapIterator(a.m_pointer - b); }
++inline ptrdiff_t operator-(TimerHeapIterator a, TimerHeapIterator b) { return a.m_pointer - b.m_pointer; }
+
+-inline TimerHeapIterator operator-(TimerHeapIterator a, int b) { return a.index() - b; }
+-inline int operator-(TimerHeapIterator a, TimerHeapIterator b) { return a.index() - b.index(); }
++// ----------------
++
++class TimerHeapLessThanFunction {
++public:
++ bool operator()(TimerBase*, TimerBase*) const;
++};
++
++inline bool TimerHeapLessThanFunction::operator()(TimerBase* a, TimerBase* b) const
++{
++ // The comparisons below are "backwards" because the heap puts the largest
++ // element first and we want the lowest time to be the first one in the heap.
++ double aFireTime = a->m_nextFireTime;
++ double bFireTime = b->m_nextFireTime;
++ if (bFireTime != aFireTime)
++ return bFireTime < aFireTime;
++
++ // We need to look at the difference of the insertion orders instead of comparing the two
++ // outright in case of overflow.
++ unsigned difference = a->m_heapInsertionOrder - b->m_heapInsertionOrder;
++ return difference < numeric_limits<unsigned>::max() / 2;
++}
+
+ // ----------------
+
+@@ -225,7 +255,8 @@ void TimerBase::heapDecreaseKey()
+ {
+ ASSERT(m_nextFireTime != 0);
+ checkHeapIndex();
+- push_heap(TimerHeapIterator(0), TimerHeapIterator(m_heapIndex + 1));
++ TimerBase** heapData = timerHeap().data();
++ push_heap(TimerHeapIterator(heapData), TimerHeapIterator(heapData + m_heapIndex + 1), TimerHeapLessThanFunction());
+ checkHeapIndex();
+ }
+
+@@ -274,7 +305,9 @@ void TimerBase::heapPopMin()
+ {
+ ASSERT(this == timerHeap().first());
+ checkHeapIndex();
+- pop_heap(TimerHeapIterator(0), TimerHeapIterator(timerHeap().size()));
++ Vector<TimerBase*>& heap = timerHeap();
++ TimerBase** heapData = heap.data();
++ pop_heap(TimerHeapIterator(heapData), TimerHeapIterator(heapData + heap.size()), TimerHeapLessThanFunction());
+ checkHeapIndex();
+ ASSERT(this == timerHeap().last());
+ }
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_Timer.h b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_Timer.h
new file mode 100644
index 0000000..f1b1dbb
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_Timer.h
@@ -0,0 +1,18 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_WebCore_platform_Timer.h,v 1.1 2013/05/09 14:07:08 joerg Exp $
+
+Upstream changeset 92556
+
+--- a/src/3rdparty/webkit/Source/WebCore/platform/Timer.h.orig 2012-11-23 10:09:58.000000000 +0000
++++ b/src/3rdparty/webkit/Source/WebCore/platform/Timer.h
+@@ -84,9 +84,9 @@ private:
+ ThreadIdentifier m_thread;
+ #endif
+
+- friend class TimerHeapElement;
+ friend class ThreadTimers;
+- friend bool operator<(const TimerHeapElement&, const TimerHeapElement&);
++ friend class TimerHeapLessThanFunction;
++ friend class TimerHeapReference;
+ };
+
+ template <typename TimerFiredClass> class Timer : public TimerBase {
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_graphics_MediaPlayer.cpp b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_graphics_MediaPlayer.cpp
new file mode 100644
index 0000000..49733e3
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_graphics_MediaPlayer.cpp
@@ -0,0 +1,14 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_WebCore_platform_graphics_MediaPlayer.cpp,v 1.1 2012/01/12 22:59:58 adam Exp $
+
+--- a/src/3rdparty/webkit/Source/WebCore/platform/graphics/MediaPlayer.cpp.orig 2012-01-08 12:03:43.000000000 +0000
++++ b/src/3rdparty/webkit/Source/WebCore/platform/graphics/MediaPlayer.cpp
+@@ -192,9 +192,6 @@ static Vector<MediaPlayerFactory*>& inst
+ MediaPlayerPrivateAVFoundationObjC::registerMediaEngine(addMediaEngine);
+ #endif
+
+-#if !PLATFORM(GTK) && !PLATFORM(EFL) && !(PLATFORM(QT) && USE(GSTREAMER))
+- PlatformMediaEngineClassName::registerMediaEngine(addMediaEngine);
+-#endif
+ }
+
+ return installedEngines;
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_network_qt_QNetworkReplyHandler.cpp b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_network_qt_QNetworkReplyHandler.cpp
new file mode 100644
index 0000000..d800d42
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_network_qt_QNetworkReplyHandler.cpp
@@ -0,0 +1,73 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_WebCore_platform_network_qt_QNetworkReplyHandler.cpp,v 1.1 2013/05/09 14:07:08 joerg Exp $
+
+--- a/src/3rdparty/webkit/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp.orig 2013-05-03 13:04:45.000000000 +0000
++++ b/src/3rdparty/webkit/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
+@@ -235,7 +235,7 @@ QNetworkReply* QNetworkReplyWrapper::rel
+ resetConnections();
+ QNetworkReply* reply = m_reply;
+ m_reply = 0;
+- m_sniffer = 0;
++ m_sniffer = nullptr;
+
+ reply->setParent(0);
+ return reply;
+@@ -300,7 +300,7 @@ void QNetworkReplyWrapper::receiveSniffe
+ Q_ASSERT(m_sniffer);
+
+ m_sniffedMIMEType = m_sniffer->mimeType();
+- m_sniffer = 0;
++ m_sniffer = nullptr;
+
+ emitMetaDataChanged();
+ }
+@@ -417,7 +417,7 @@ QNetworkReply* QNetworkReplyHandler::rel
+ return 0;
+
+ QNetworkReply* reply = m_replyWrapper->release();
+- m_replyWrapper = 0;
++ m_replyWrapper = nullptr;
+ return reply;
+ }
+
+@@ -440,12 +440,12 @@ void QNetworkReplyHandler::finish()
+
+ ResourceHandleClient* client = m_resourceHandle->client();
+ if (!client) {
+- m_replyWrapper = 0;
++ m_replyWrapper = nullptr;
+ return;
+ }
+
+ if (m_replyWrapper->wasRedirected()) {
+- m_replyWrapper = 0;
++ m_replyWrapper = nullptr;
+ m_queue.push(&QNetworkReplyHandler::start);
+ return;
+ }
+@@ -465,7 +465,7 @@ void QNetworkReplyHandler::finish()
+ }
+ }
+
+- m_replyWrapper = 0;
++ m_replyWrapper = nullptr;
+ }
+
+ void QNetworkReplyHandler::sendResponseIfNeeded()
+@@ -539,7 +539,7 @@ void QNetworkReplyHandler::redirect(Reso
+ newUrl.toString(),
+ QCoreApplication::translate("QWebPage", "Redirection limit reached"));
+ client->didFail(m_resourceHandle, error);
+- m_replyWrapper = 0;
++ m_replyWrapper = nullptr;
+ return;
+ }
+
+@@ -666,7 +666,7 @@ void QNetworkReplyHandler::start()
+ if (!reply)
+ return;
+
+- m_replyWrapper = new QNetworkReplyWrapper(&m_queue, reply, m_resourceHandle->shouldContentSniff() && d->m_context->mimeSniffingEnabled(), this);
++ m_replyWrapper = adoptPtr(new QNetworkReplyWrapper(&m_queue, reply, m_resourceHandle->shouldContentSniff() && d->m_context->mimeSniffingEnabled(), this));
+
+ if (m_loadType == SynchronousLoad) {
+ m_replyWrapper->synchronousLoad();
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_qt_PlatformKeyboardEventQt.cpp b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_qt_PlatformKeyboardEventQt.cpp
new file mode 100644
index 0000000..aebd19d
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_qt_PlatformKeyboardEventQt.cpp
@@ -0,0 +1,13 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_WebCore_platform_qt_PlatformKeyboardEventQt.cpp,v 1.1 2012/11/19 10:52:23 ryoon Exp $
+
+--- a/src/3rdparty/webkit/Source/WebCore/platform/qt/PlatformKeyboardEventQt.cpp.orig 2012-09-11 01:36:47.000000000 +0000
++++ b/src/3rdparty/webkit/Source/WebCore/platform/qt/PlatformKeyboardEventQt.cpp
+@@ -133,7 +133,7 @@ String keyIdentifierForQtKeyCode(int key
+ case Qt::Key_Backtab:
+ return "U+0009";
+ default:
+- return String::format("U+%04X", toupper(keyCode));
++ return String::format("U+%04X", toupper((unsigned char)keyCode));
+ }
+ }
+
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebKit_qt_Api_qgraphicswebview.cpp b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebKit_qt_Api_qgraphicswebview.cpp
new file mode 100644
index 0000000..c66e8c8
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebKit_qt_Api_qgraphicswebview.cpp
@@ -0,0 +1,22 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_WebKit_qt_Api_qgraphicswebview.cpp,v 1.1 2013/05/09 14:07:08 joerg Exp $
+
+--- a/src/3rdparty/webkit/Source/WebKit/qt/Api/qgraphicswebview.cpp.orig 2013-05-03 13:55:03.000000000 +0000
++++ b/src/3rdparty/webkit/Source/WebKit/qt/Api/qgraphicswebview.cpp
+@@ -471,7 +471,7 @@ void QGraphicsWebViewPrivate::detachCurr
+ return;
+
+ page->d->view.clear();
+- page->d->client = 0;
++ page->d->client = nullptr;
+
+ // if the page was created by us, we own it and need to
+ // destroy it as well.
+@@ -504,7 +504,7 @@ void QGraphicsWebView::setPage(QWebPage*
+ if (!d->page)
+ return;
+
+- d->page->d->client = new PageClientQGraphicsWidget(this, page); // set the page client
++ d->page->d->client = adoptPtr(new PageClientQGraphicsWidget(this, page)); // set the page client
+
+ if (d->overlay())
+ d->overlay()->prepareGraphicsItemGeometryChange();
diff --git a/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebKit_qt_WebCoreSupport_NotificationPresenterClientQt.cpp b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebKit_qt_WebCoreSupport_NotificationPresenterClientQt.cpp
new file mode 100644
index 0000000..3e5cabb
--- /dev/null
+++ b/debian/patches/pkgsrc/patch-src_3rdparty_webkit_Source_WebKit_qt_WebCoreSupport_NotificationPresenterClientQt.cpp
@@ -0,0 +1,28 @@
+$NetBSD: patch-src_3rdparty_webkit_Source_WebKit_qt_WebCoreSupport_NotificationPresenterClientQt.cpp,v 1.1 2013/05/09 14:07:08 joerg Exp $
+
+--- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp.orig 2013-05-03 13:43:43.000000000 +0000
++++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp
+@@ -73,9 +73,9 @@ NotificationWrapper::NotificationWrapper
+ #if ENABLE(NOTIFICATIONS)
+
+ #ifndef QT_NO_SYSTEMTRAYICON
+- m_notificationIcon = 0;
++ m_notificationIcon = nullptr;
+ #endif
+- m_presenter = 0;
++ m_presenter = nullptr;
+ #endif
+ }
+
+@@ -211,9 +211,9 @@ void NotificationPresenterClientQt::disp
+ QPixmap pixmap;
+ if (bytes.length() && pixmap.loadFromData(bytes)) {
+ QIcon icon(pixmap);
+- wrapper->m_notificationIcon = new QSystemTrayIcon(icon);
++ wrapper->m_notificationIcon = adoptPtr(new QSystemTrayIcon(icon));
+ } else
+- wrapper->m_notificationIcon = new QSystemTrayIcon();
++ wrapper->m_notificationIcon = adoptPtr(new QSystemTrayIcon());
+ #endif
+ }
+
diff --git a/debian/patches/series b/debian/patches/series
index c3c31f5..987c560 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -42,3 +42,30 @@ add_missing_method_for_QBasicAtomicPointer_on_s390.patch
no_libicu_message.diff
QTBUG-25324_assistant_segfault_on_start_with_gcc_4.7.patch
dyson-UNAME_MACHINE.patch
+
+# PKGSRC patches
+# See https://github.com/jsonn/pkgsrc
+# Changed path depth from 0 to 1 (-p0 -> -p1)
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MachineStackMarker.cpp
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MarkedSpace.cpp
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_heap_MarkedSpace.h
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_jit_JITStubs.cpp
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_parser_JSParser.cpp
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Atomics.h
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_HashSet.h
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_MathExtras.h
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_NullPtr.h
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_RefCountedLeakCounter.h
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_StringImpl.h
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_ThreadSafeRefCounted.h
+pkgsrc/patch-src_3rdparty_webkit_Source_JavaScriptCore_wtf_Threading.h
+pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_dom_Element.cpp
+pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_features.pri
+pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_DefaultLocalizationStrategy.cpp
+pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_Timer.cpp
+pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_Timer.h
+pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_graphics_MediaPlayer.cpp
+pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_network_qt_QNetworkReplyHandler.cpp
+pkgsrc/patch-src_3rdparty_webkit_Source_WebCore_platform_qt_PlatformKeyboardEventQt.cpp
+pkgsrc/patch-src_3rdparty_webkit_Source_WebKit_qt_Api_qgraphicswebview.cpp
+pkgsrc/patch-src_3rdparty_webkit_Source_WebKit_qt_WebCoreSupport_NotificationPresenterClientQt.cpp