# HG changeset patch # User innparusu # Date 1475137095 -32400 # Node ID 9ae7ce6c83f56c38cf7b5cc3d9d7eb12d8824d53 # Parent 36ac17d37be44228dbe3af499eadb7030820c3b9 Fix segmentation falt diff -r 36ac17d37be4 -r 9ae7ce6c83f5 src/parallel_execution/rb_tree.c --- a/src/parallel_execution/rb_tree.c Thu Sep 29 16:58:23 2016 +0900 +++ b/src/parallel_execution/rb_tree.c Thu Sep 29 17:18:15 2016 +0900 @@ -109,15 +109,15 @@ context->data[Traverse]->traverse.newNode); } -__code insertCase1(struct Context* context, struct Node* parent) { - if (parent!=NULL) { +__code insertCase1(struct Context* context, struct Element* nodeStack) { + if (nodeStack!=NULL) { goto meta(context, InsertCase2); } goto meta(context, StackClear); } __code insert1_stub(struct Context* context) { - goto insertCase1(context, (struct Node*)context->data[Traverse]->traverse.nodeStack->data); + goto insertCase1(context, context->data[Traverse]->traverse.nodeStack); } __code insertCase2(struct Context* context, struct Node* parent) { @@ -281,7 +281,7 @@ allocator(context); struct Element* element = &context->data[context->dataNum]->element; goto rotateLeft(context, - &context->data[Node]->node, + context->data[Traverse]->traverse.current, &context->data[Tree]->tree, &context->data[Traverse]->traverse, parent, @@ -310,15 +310,18 @@ } __code rotateRight_stub(struct Context* context) { + struct Traverse* traverse = &context->data[Traverse]->traverse; + struct Node* parent = (traverse->nodeStack)?(struct Node*)traverse->nodeStack->data:NULL; + traverse->nodeStack = traverse->nodeStack->next; struct Allocate* allocate = &context->data[Allocate]->allocate; allocate->size = sizeof(struct Element); allocator(context); struct Element* element = &context->data[context->dataNum]->element; goto rotateRight(context, - &context->data[Node]->node, + context->data[Traverse]->traverse.current, &context->data[Tree]->tree, &context->data[Traverse]->traverse, - context->data[Traverse]->traverse.current, + parent, element); }