diff src/parallel_execution/worker.c @ 123:4ff6f093b695

Fix segmentation fault
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Tue, 13 Sep 2016 11:54:25 +0900
parents a086857e1812
children 77e60b6cdace
line wrap: on
line diff
--- a/src/parallel_execution/worker.c	Thu Aug 25 03:23:29 2016 +0900
+++ b/src/parallel_execution/worker.c	Tue Sep 13 11:54:25 2016 +0900
@@ -16,8 +16,8 @@
     if (queue->first == 0)
         return;
 
-    element = queue->first;
-    if (__sync_bool_compare_and_swap(&queue->first, element, element->next)) {
+    element->data = queue->first->data;
+    if (__sync_bool_compare_and_swap(&queue->first, queue->first, queue->first->next)) {
         queue->count--;
         goto meta(context, context->next);
     } else {
@@ -31,7 +31,7 @@
 
 __code getInputData1(struct Context* context, struct Task* task, struct Node* node, struct LoopCounter* loopCounter) {
     int i = loopCounter->i;
-    if(i < sizeof(task->iKeys)/ sizeof(int)) {
+    if(i < sizeof(task->iKeys) / sizeof(int)) {
         context->next = GetInputData2;
         node->key = task->iKeys[i];
         struct Traverse *t = &context->data[Traverse]->traverse;