1*1f5207b7SJohn Levon //#include <stdlib.h> 2*1f5207b7SJohn Levon 3*1f5207b7SJohn Levon struct foo { 4*1f5207b7SJohn Levon int a; 5*1f5207b7SJohn Levon }; 6*1f5207b7SJohn Levon 7*1f5207b7SJohn Levon struct foo *a; 8*1f5207b7SJohn Levon struct foo *b; 9*1f5207b7SJohn Levon struct foo *c; 10*1f5207b7SJohn Levon struct foo *d; 11*1f5207b7SJohn Levon int x; 12*1f5207b7SJohn Levon func(void)13*1f5207b7SJohn Levonvoid func (void) 14*1f5207b7SJohn Levon { 15*1f5207b7SJohn Levon a = 0; 16*1f5207b7SJohn Levon b = 0; 17*1f5207b7SJohn Levon c = 0; 18*1f5207b7SJohn Levon d = 0; 19*1f5207b7SJohn Levon 20*1f5207b7SJohn Levon switch(x) { 21*1f5207b7SJohn Levon case 1: 22*1f5207b7SJohn Levon a = returns_nonnull(); 23*1f5207b7SJohn Levon break; 24*1f5207b7SJohn Levon case 2: 25*1f5207b7SJohn Levon b = returns_nonnull(); 26*1f5207b7SJohn Levon break; 27*1f5207b7SJohn Levon case 3: 28*1f5207b7SJohn Levon c = returns_nonnull(); 29*1f5207b7SJohn Levon break; 30*1f5207b7SJohn Levon default: 31*1f5207b7SJohn Levon d = returns_nonnull(); 32*1f5207b7SJohn Levon } 33*1f5207b7SJohn Levon 34*1f5207b7SJohn Levon switch(x) { 35*1f5207b7SJohn Levon case 1: 36*1f5207b7SJohn Levon a->a = 1; 37*1f5207b7SJohn Levon case 2: 38*1f5207b7SJohn Levon a->a = 2; 39*1f5207b7SJohn Levon b->a = 3; 40*1f5207b7SJohn Levon break; 41*1f5207b7SJohn Levon case 3: 42*1f5207b7SJohn Levon c->a = 4; 43*1f5207b7SJohn Levon break; 44*1f5207b7SJohn Levon case 4: 45*1f5207b7SJohn Levon d->a = 5; 46*1f5207b7SJohn Levon break; 47*1f5207b7SJohn Levon } 48*1f5207b7SJohn Levon } 49*1f5207b7SJohn Levon /* 50*1f5207b7SJohn Levon * check-name: Smatch switch handling 51*1f5207b7SJohn Levon * check-command: smatch --spammy sm_switch.c 52*1f5207b7SJohn Levon * check-known-to-fail 53*1f5207b7SJohn Levon * 54*1f5207b7SJohn Levon * check-output-start 55*1f5207b7SJohn Levon sm_switch.c:38 func() warn: missing break? reassigning 'a->a' 56*1f5207b7SJohn Levon sm_switch.c:38 func() error: potential NULL dereference 'a'. 57*1f5207b7SJohn Levon sm_switch.c:39 func() error: potential NULL dereference 'b'. 58*1f5207b7SJohn Levon * check-output-end 59*1f5207b7SJohn Levon */ 60