From 3a8c9ad4968a04253e01703258418bff7bf220ae Mon Sep 17 00:00:00 2001 From: csoler Date: Fri, 22 Mar 2013 21:59:27 +0000 Subject: [PATCH] fixed bug in deferred signature code, due to thread copy+write mechanism git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6271 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- retroshare-gui/src/gui/notifyqt.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/retroshare-gui/src/gui/notifyqt.cpp b/retroshare-gui/src/gui/notifyqt.cpp index 6167ab169..1581540f6 100644 --- a/retroshare-gui/src/gui/notifyqt.cpp +++ b/retroshare-gui/src/gui/notifyqt.cpp @@ -151,7 +151,6 @@ class SignatureEventData { public: SignatureEventData(const void *_data,int32_t _len,unsigned int _signlen) - : data(_data),len(_len) { // We need a new memory chnk because there's no guarranty _sign nor _signlen are not in the stack @@ -159,12 +158,16 @@ class SignatureEventData signlen = new unsigned int ; *signlen = _signlen ; signature_result = 0 ; + data = malloc(_len) ; + len = _len ; + memcpy(data,_data,len) ; } ~SignatureEventData() { free(sign) ; delete signlen ; + free(data) ; } bool performSignature() @@ -173,7 +176,7 @@ class SignatureEventData signature_result = 1 ; } - const void *data ; + void *data ; uint32_t len ; unsigned char *sign ; unsigned int *signlen ;