From: <mie...@us...> - 2009-06-30 19:33:33
|
Revision: 4858 http://oorexx.svn.sourceforge.net/oorexx/?rev=4858&view=rev Author: miesfeld Date: 2009-06-30 19:33:26 +0000 (Tue, 30 Jun 2009) Log Message: ----------- Fix rxapi crash on Linux caused by freeing an invalid pointer. freeMessageData() retainMessageData=0 messageData=0xbfd47f8b Segmentation fault (core dumped) or freeMessageData() retainMessageData=0 messageData=0xbf957bab *** glibc detected *** ./rxapi: free(): invalid pointer: 0xbf957bab *** Modified Paths: -------------- main/branches/4.0beta/trunk/rexxapi/server/QueueManager.cpp Modified: main/branches/4.0beta/trunk/rexxapi/server/QueueManager.cpp =================================================================== --- main/branches/4.0beta/trunk/rexxapi/server/QueueManager.cpp 2009-06-29 23:50:37 UTC (rev 4857) +++ main/branches/4.0beta/trunk/rexxapi/server/QueueManager.cpp 2009-06-30 19:33:26 UTC (rev 4858) @@ -212,8 +212,8 @@ // the message will delete the queue data once it has been sent // back to the client. message.setMessageData((void *)item->elementData, item->size); - // this data needs to be freed once the result is sent back - message.retainMessageData = false; + // this data needs to be freed once the result is sent back, if we allocated it + message.retainMessageData = item->size == 0 ? true : false; // we've taken the data from the item, so clear it out before we delete. item->clear(); // we're done with this, let it go. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |