From 037b00400699b8bd88b250d6d5b053a85edb2a61 Mon Sep 17 00:00:00 2001 From: Brian Demsky Date: Wed, 6 Mar 2013 19:13:19 -0800 Subject: [PATCH] deque: fix bugs in assertion code and move up 3 variables... --- chase-lev-deque/main.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/chase-lev-deque/main.c b/chase-lev-deque/main.c index ee69867..0a29a51 100644 --- a/chase-lev-deque/main.c +++ b/chase-lev-deque/main.c @@ -9,11 +9,10 @@ Deque *q; int a; int b; +int c; static void task(void * param) { - do { - a=steal(q); - } while(a==EMPTY); + a=steal(q); } int user_main(int argc, char **argv) @@ -23,9 +22,20 @@ int user_main(int argc, char **argv) thrd_create(&t, task, 0); push(q, 1); push(q, 2); + push(q, 4); b=take(q); + c=take(q); thrd_join(t); - if (a+b!=3) - printf("a=%d b=%d\n",a,b); + bool correct=true; + if (a!=1 && a!=2 && a!=4 && a!= EMPTY) + correct=false; + if (b!=1 && b!=2 && b!=4 && b!= EMPTY) + correct=false; + if (c!=1 && c!=2 && c!=4 && a!= EMPTY) + correct=false; + if (a!=EMPTY && b!=EMPTY && c!=EMPTY && (a+b+c)!=7) + correct=false; + if (!correct) + printf("a=%d b=%d c=%d\n",a,b,c); return 0; } -- 2.34.1