Home | History | Annotate | Line # | Download | only in lint1
msg_302.c revision 1.4
      1  1.4  rillig /*	$NetBSD: msg_302.c,v 1.4 2022/06/22 19:23:18 rillig Exp $	*/
      2  1.1  rillig # 3 "msg_302.c"
      3  1.1  rillig 
      4  1.4  rillig // Test for message: '%s' returns pointer to automatic object [302]
      5  1.1  rillig 
      6  1.3  rillig void *
      7  1.3  rillig return_arg(int arg)
      8  1.3  rillig {
      9  1.4  rillig 	/* expect+1: warning: 'return_arg' returns pointer to automatic object [302] */
     10  1.3  rillig 	return &arg;
     11  1.3  rillig }
     12  1.3  rillig 
     13  1.3  rillig void *
     14  1.3  rillig return_local(void)
     15  1.3  rillig {
     16  1.3  rillig 	int local = 3;
     17  1.4  rillig 	/* expect+1: warning: 'return_local' returns pointer to automatic object [302] */
     18  1.3  rillig 	return &local;
     19  1.3  rillig }
     20  1.3  rillig 
     21  1.3  rillig void *
     22  1.3  rillig return_local_array(_Bool cond)
     23  1.3  rillig {
     24  1.3  rillig 	int local[5];
     25  1.3  rillig 	int *p = local;
     26  1.3  rillig 
     27  1.3  rillig 	/* XXX: lint doesn't track this indirection, but Clang-tidy does. */
     28  1.3  rillig 	if (cond)
     29  1.3  rillig 		return p;
     30  1.3  rillig 
     31  1.4  rillig 	/* expect+1: warning: 'return_local_array' returns pointer to automatic object [302] */
     32  1.3  rillig 	return local + 5;
     33  1.3  rillig }
     34  1.3  rillig 
     35  1.3  rillig void *
     36  1.3  rillig return_static(void)
     37  1.3  rillig {
     38  1.3  rillig 	static int long_lived = 3;
     39  1.3  rillig 	return &long_lived;
     40  1.3  rillig }
     41