[packages] rtorrent: update to r1123 (#6624)
git-svn-id: svn://svn.openwrt.org/openwrt/packages@19499 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
d72d83687d
commit
f39b4c249f
@ -10,9 +10,9 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=rtorrent
|
||||
|
||||
PKG_REV:=1106
|
||||
PKG_REV:=1123
|
||||
PKG_VERSION:=0.8.6_r$(PKG_REV)
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=svn://rakshasa.no/libtorrent/trunk/rtorrent
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
|
64
net/rtorrent/patches/110-fix-no-posix_memalign.diff
Normal file
64
net/rtorrent/patches/110-fix-no-posix_memalign.diff
Normal file
@ -0,0 +1,64 @@
|
||||
Index: rtorrent/rak/allocators.h
|
||||
===================================================================
|
||||
--- rtorrent/rak/allocators.h (revision 1121)
|
||||
+++ rtorrent/rak/allocators.h (working copy)
|
||||
@@ -74,17 +74,13 @@
|
||||
size_type max_size () const throw() { return std::numeric_limits<size_t>::max() / sizeof(T); }
|
||||
|
||||
pointer allocate(size_type num, const_void_pointer hint = 0) { return alloc_size(num*sizeof(T)); }
|
||||
+ void deallocate (pointer p, size_type num) { dealloc_size(p, num*sizeof(T)); }
|
||||
|
||||
- static pointer alloc_size(size_type size) {
|
||||
- pointer ptr = NULL;
|
||||
- int __UNUSED result = posix_memalign((void**)&ptr, LT_SMP_CACHE_BYTES, size);
|
||||
+ static pointer alloc_size(size_type size);
|
||||
+ static void dealloc_size(pointer p, size_type size);
|
||||
|
||||
- return ptr;
|
||||
- }
|
||||
-
|
||||
void construct (pointer p, const T& value) { new((void*)p)T(value); }
|
||||
void destroy (pointer p) { p->~T(); }
|
||||
- void deallocate (pointer p, size_type num) { ::operator delete((void*)p); }
|
||||
};
|
||||
|
||||
|
||||
@@ -98,8 +94,38 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
+template <class T>
|
||||
+inline typename cacheline_allocator<T>::pointer cacheline_allocator<T>::alloc_size(size_type size) {
|
||||
+ pointer ptr;
|
||||
+
|
||||
+#if HAVE_POSIX_MEMALIGN
|
||||
+ if (posix_memalign((void**)&ptr, LT_SMP_CACHE_BYTES, size))
|
||||
+ return NULL;
|
||||
+#else
|
||||
+ char* org = (char*)malloc(size + sizeof(void*) + LT_SMP_CACHE_BYTES - 1);
|
||||
+ if (org == NULL)
|
||||
+ return NULL;
|
||||
+
|
||||
+ ptr = (pointer)((uintptr_t)(org + LT_SMP_CACHE_BYTES - 1) & ~(LT_SMP_CACHE_BYTES - 1));
|
||||
+
|
||||
+ // store originally allocated pointer for later free() at the end of the allocated data
|
||||
+ *(void**)((char*)ptr + size) = org;
|
||||
+#endif
|
||||
+
|
||||
+ return ptr;
|
||||
}
|
||||
|
||||
+template <class T>
|
||||
+inline void cacheline_allocator<T>::dealloc_size(pointer p, size_type size) {
|
||||
+#if HAVE_POSIX_MEMALIGN
|
||||
+ free(p);
|
||||
+#else
|
||||
+ free(*(void**)((char*)p + size));
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+}
|
||||
+
|
||||
//
|
||||
// Operator new with custom allocators:
|
||||
//
|
9
net/rtorrent/patches/111-fix_crash_thread.patch
Normal file
9
net/rtorrent/patches/111-fix_crash_thread.patch
Normal file
@ -0,0 +1,9 @@
|
||||
--- a/src/thread_base.cc 2010-01-26 09:40:34.000000000 +0300
|
||||
+++ b/src/thread_base.cc 2010-01-31 18:38:25.000000000 +0300
|
||||
@@ -191,5 +191,5 @@
|
||||
void
|
||||
ThreadBase::queue_item(thread_base_func newFunc) {
|
||||
m_threadQueue->push_back(newFunc);
|
||||
- pthread_kill(m_thread, SIGUSR1);
|
||||
+ if(m_thread != NULL) pthread_kill(m_thread, SIGUSR1);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user