xref: /minix3/external/bsd/llvm/dist/clang/test/Analysis/NewDelete-path-notes.cpp (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -analyze -analyzer-checker=cplusplus.NewDelete,unix.Malloc -analyzer-output=text -verify %s
2*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -analyze -analyzer-checker=cplusplus.NewDelete,unix.Malloc -analyzer-output=plist -analyzer-config path-diagnostics-alternate=false %s -o %t.plist
3*f4a2713aSLionel Sambuc // RUN: FileCheck --input-file=%t.plist %s
4*f4a2713aSLionel Sambuc 
test()5*f4a2713aSLionel Sambuc void test() {
6*f4a2713aSLionel Sambuc   int *p = new int;
7*f4a2713aSLionel Sambuc   // expected-note@-1 {{Memory is allocated}}
8*f4a2713aSLionel Sambuc   if (p)
9*f4a2713aSLionel Sambuc     // expected-note@-1 {{Taking true branch}}
10*f4a2713aSLionel Sambuc     delete p;
11*f4a2713aSLionel Sambuc     // expected-note@-1 {{Memory is released}}
12*f4a2713aSLionel Sambuc 
13*f4a2713aSLionel Sambuc   delete p; // expected-warning {{Attempt to free released memory}}
14*f4a2713aSLionel Sambuc   // expected-note@-1 {{Attempt to free released memory}}
15*f4a2713aSLionel Sambuc }
16*f4a2713aSLionel Sambuc 
17*f4a2713aSLionel Sambuc struct Odd {
killOdd18*f4a2713aSLionel Sambuc 	void kill() {
19*f4a2713aSLionel Sambuc 		delete this; // expected-note {{Memory is released}}
20*f4a2713aSLionel Sambuc 	}
21*f4a2713aSLionel Sambuc };
22*f4a2713aSLionel Sambuc 
test(Odd * odd)23*f4a2713aSLionel Sambuc void test(Odd *odd) {
24*f4a2713aSLionel Sambuc 	odd->kill(); // expected-note{{Calling 'Odd::kill'}}
25*f4a2713aSLionel Sambuc                // expected-note@-1 {{Returning; memory was released}}
26*f4a2713aSLionel Sambuc 	delete odd; // expected-warning {{Attempt to free released memory}}
27*f4a2713aSLionel Sambuc               // expected-note@-1 {{Attempt to free released memory}}
28*f4a2713aSLionel Sambuc }
29*f4a2713aSLionel Sambuc 
30*f4a2713aSLionel Sambuc // CHECK:  <key>diagnostics</key>
31*f4a2713aSLionel Sambuc // CHECK-NEXT:  <array>
32*f4a2713aSLionel Sambuc // CHECK-NEXT:   <dict>
33*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>path</key>
34*f4a2713aSLionel Sambuc // CHECK-NEXT:    <array>
35*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
36*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>control</string>
37*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>edges</key>
38*f4a2713aSLionel Sambuc // CHECK-NEXT:       <array>
39*f4a2713aSLionel Sambuc // CHECK-NEXT:        <dict>
40*f4a2713aSLionel Sambuc // CHECK-NEXT:         <key>start</key>
41*f4a2713aSLionel Sambuc // CHECK-NEXT:          <array>
42*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
43*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>6</integer>
44*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>3</integer>
45*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
46*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
47*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
48*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>6</integer>
49*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>5</integer>
50*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
51*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
52*f4a2713aSLionel Sambuc // CHECK-NEXT:          </array>
53*f4a2713aSLionel Sambuc // CHECK-NEXT:         <key>end</key>
54*f4a2713aSLionel Sambuc // CHECK-NEXT:          <array>
55*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
56*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>6</integer>
57*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>12</integer>
58*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
59*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
60*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
61*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>6</integer>
62*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>14</integer>
63*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
64*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
65*f4a2713aSLionel Sambuc // CHECK-NEXT:          </array>
66*f4a2713aSLionel Sambuc // CHECK-NEXT:        </dict>
67*f4a2713aSLionel Sambuc // CHECK-NEXT:       </array>
68*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
69*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
70*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>event</string>
71*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>location</key>
72*f4a2713aSLionel Sambuc // CHECK-NEXT:      <dict>
73*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>line</key><integer>6</integer>
74*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>col</key><integer>12</integer>
75*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>file</key><integer>0</integer>
76*f4a2713aSLionel Sambuc // CHECK-NEXT:      </dict>
77*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>ranges</key>
78*f4a2713aSLionel Sambuc // CHECK-NEXT:      <array>
79*f4a2713aSLionel Sambuc // CHECK-NEXT:        <array>
80*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
81*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>6</integer>
82*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>12</integer>
83*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
84*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
85*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
86*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>6</integer>
87*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>18</integer>
88*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
89*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
90*f4a2713aSLionel Sambuc // CHECK-NEXT:        </array>
91*f4a2713aSLionel Sambuc // CHECK-NEXT:      </array>
92*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>depth</key><integer>0</integer>
93*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>extended_message</key>
94*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Memory is allocated</string>
95*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>message</key>
96*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Memory is allocated</string>
97*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
98*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
99*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>control</string>
100*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>edges</key>
101*f4a2713aSLionel Sambuc // CHECK-NEXT:       <array>
102*f4a2713aSLionel Sambuc // CHECK-NEXT:        <dict>
103*f4a2713aSLionel Sambuc // CHECK-NEXT:         <key>start</key>
104*f4a2713aSLionel Sambuc // CHECK-NEXT:          <array>
105*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
106*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>6</integer>
107*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>12</integer>
108*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
109*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
110*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
111*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>6</integer>
112*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>14</integer>
113*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
114*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
115*f4a2713aSLionel Sambuc // CHECK-NEXT:          </array>
116*f4a2713aSLionel Sambuc // CHECK-NEXT:         <key>end</key>
117*f4a2713aSLionel Sambuc // CHECK-NEXT:          <array>
118*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
119*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>8</integer>
120*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>3</integer>
121*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
122*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
123*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
124*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>8</integer>
125*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>4</integer>
126*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
127*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
128*f4a2713aSLionel Sambuc // CHECK-NEXT:          </array>
129*f4a2713aSLionel Sambuc // CHECK-NEXT:        </dict>
130*f4a2713aSLionel Sambuc // CHECK-NEXT:       </array>
131*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
132*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
133*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>control</string>
134*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>edges</key>
135*f4a2713aSLionel Sambuc // CHECK-NEXT:       <array>
136*f4a2713aSLionel Sambuc // CHECK-NEXT:        <dict>
137*f4a2713aSLionel Sambuc // CHECK-NEXT:         <key>start</key>
138*f4a2713aSLionel Sambuc // CHECK-NEXT:          <array>
139*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
140*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>8</integer>
141*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>3</integer>
142*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
143*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
144*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
145*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>8</integer>
146*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>4</integer>
147*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
148*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
149*f4a2713aSLionel Sambuc // CHECK-NEXT:          </array>
150*f4a2713aSLionel Sambuc // CHECK-NEXT:         <key>end</key>
151*f4a2713aSLionel Sambuc // CHECK-NEXT:          <array>
152*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
153*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>10</integer>
154*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>5</integer>
155*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
156*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
157*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
158*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>10</integer>
159*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>10</integer>
160*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
161*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
162*f4a2713aSLionel Sambuc // CHECK-NEXT:          </array>
163*f4a2713aSLionel Sambuc // CHECK-NEXT:        </dict>
164*f4a2713aSLionel Sambuc // CHECK-NEXT:       </array>
165*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
166*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
167*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>event</string>
168*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>location</key>
169*f4a2713aSLionel Sambuc // CHECK-NEXT:      <dict>
170*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>line</key><integer>10</integer>
171*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>col</key><integer>5</integer>
172*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>file</key><integer>0</integer>
173*f4a2713aSLionel Sambuc // CHECK-NEXT:      </dict>
174*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>ranges</key>
175*f4a2713aSLionel Sambuc // CHECK-NEXT:      <array>
176*f4a2713aSLionel Sambuc // CHECK-NEXT:        <array>
177*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
178*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>10</integer>
179*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>5</integer>
180*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
181*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
182*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
183*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>10</integer>
184*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>12</integer>
185*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
186*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
187*f4a2713aSLionel Sambuc // CHECK-NEXT:        </array>
188*f4a2713aSLionel Sambuc // CHECK-NEXT:      </array>
189*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>depth</key><integer>0</integer>
190*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>extended_message</key>
191*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Memory is released</string>
192*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>message</key>
193*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Memory is released</string>
194*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
195*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
196*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>control</string>
197*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>edges</key>
198*f4a2713aSLionel Sambuc // CHECK-NEXT:       <array>
199*f4a2713aSLionel Sambuc // CHECK-NEXT:        <dict>
200*f4a2713aSLionel Sambuc // CHECK-NEXT:         <key>start</key>
201*f4a2713aSLionel Sambuc // CHECK-NEXT:          <array>
202*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
203*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>10</integer>
204*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>5</integer>
205*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
206*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
207*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
208*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>10</integer>
209*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>10</integer>
210*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
211*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
212*f4a2713aSLionel Sambuc // CHECK-NEXT:          </array>
213*f4a2713aSLionel Sambuc // CHECK-NEXT:         <key>end</key>
214*f4a2713aSLionel Sambuc // CHECK-NEXT:          <array>
215*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
216*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>13</integer>
217*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>3</integer>
218*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
219*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
220*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
221*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>13</integer>
222*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>8</integer>
223*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
224*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
225*f4a2713aSLionel Sambuc // CHECK-NEXT:          </array>
226*f4a2713aSLionel Sambuc // CHECK-NEXT:        </dict>
227*f4a2713aSLionel Sambuc // CHECK-NEXT:       </array>
228*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
229*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
230*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>event</string>
231*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>location</key>
232*f4a2713aSLionel Sambuc // CHECK-NEXT:      <dict>
233*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>line</key><integer>13</integer>
234*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>col</key><integer>3</integer>
235*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>file</key><integer>0</integer>
236*f4a2713aSLionel Sambuc // CHECK-NEXT:      </dict>
237*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>ranges</key>
238*f4a2713aSLionel Sambuc // CHECK-NEXT:      <array>
239*f4a2713aSLionel Sambuc // CHECK-NEXT:        <array>
240*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
241*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>13</integer>
242*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>3</integer>
243*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
244*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
245*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
246*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>13</integer>
247*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>10</integer>
248*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
249*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
250*f4a2713aSLionel Sambuc // CHECK-NEXT:        </array>
251*f4a2713aSLionel Sambuc // CHECK-NEXT:      </array>
252*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>depth</key><integer>0</integer>
253*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>extended_message</key>
254*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Attempt to free released memory</string>
255*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>message</key>
256*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Attempt to free released memory</string>
257*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
258*f4a2713aSLionel Sambuc // CHECK-NEXT:    </array>
259*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>description</key><string>Attempt to free released memory</string>
260*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>category</key><string>Memory Error</string>
261*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>type</key><string>Double free</string>
262*f4a2713aSLionel Sambuc // CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
263*f4a2713aSLionel Sambuc // CHECK-NEXT:   <key>issue_context</key><string>test</string>
264*f4a2713aSLionel Sambuc // CHECK-NEXT:   <key>issue_hash</key><string>8</string>
265*f4a2713aSLionel Sambuc // CHECK-NEXT:   <key>location</key>
266*f4a2713aSLionel Sambuc // CHECK-NEXT:   <dict>
267*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>line</key><integer>13</integer>
268*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>col</key><integer>3</integer>
269*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>file</key><integer>0</integer>
270*f4a2713aSLionel Sambuc // CHECK-NEXT:   </dict>
271*f4a2713aSLionel Sambuc // CHECK-NEXT:   </dict>
272*f4a2713aSLionel Sambuc // CHECK-NEXT:   <dict>
273*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>path</key>
274*f4a2713aSLionel Sambuc // CHECK-NEXT:    <array>
275*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
276*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>event</string>
277*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>location</key>
278*f4a2713aSLionel Sambuc // CHECK-NEXT:      <dict>
279*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>line</key><integer>24</integer>
280*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>col</key><integer>2</integer>
281*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>file</key><integer>0</integer>
282*f4a2713aSLionel Sambuc // CHECK-NEXT:      </dict>
283*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>ranges</key>
284*f4a2713aSLionel Sambuc // CHECK-NEXT:      <array>
285*f4a2713aSLionel Sambuc // CHECK-NEXT:        <array>
286*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
287*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>24</integer>
288*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>2</integer>
289*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
290*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
291*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
292*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>24</integer>
293*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>12</integer>
294*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
295*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
296*f4a2713aSLionel Sambuc // CHECK-NEXT:        </array>
297*f4a2713aSLionel Sambuc // CHECK-NEXT:      </array>
298*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>depth</key><integer>0</integer>
299*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>extended_message</key>
300*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Calling &apos;Odd::kill&apos;</string>
301*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>message</key>
302*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Calling &apos;Odd::kill&apos;</string>
303*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
304*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
305*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>event</string>
306*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>location</key>
307*f4a2713aSLionel Sambuc // CHECK-NEXT:      <dict>
308*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>line</key><integer>18</integer>
309*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>col</key><integer>2</integer>
310*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>file</key><integer>0</integer>
311*f4a2713aSLionel Sambuc // CHECK-NEXT:      </dict>
312*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>depth</key><integer>1</integer>
313*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>extended_message</key>
314*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Entered call from &apos;test&apos;</string>
315*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>message</key>
316*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Entered call from &apos;test&apos;</string>
317*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
318*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
319*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>control</string>
320*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>edges</key>
321*f4a2713aSLionel Sambuc // CHECK-NEXT:       <array>
322*f4a2713aSLionel Sambuc // CHECK-NEXT:        <dict>
323*f4a2713aSLionel Sambuc // CHECK-NEXT:         <key>start</key>
324*f4a2713aSLionel Sambuc // CHECK-NEXT:          <array>
325*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
326*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>18</integer>
327*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>2</integer>
328*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
329*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
330*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
331*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>18</integer>
332*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>5</integer>
333*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
334*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
335*f4a2713aSLionel Sambuc // CHECK-NEXT:          </array>
336*f4a2713aSLionel Sambuc // CHECK-NEXT:         <key>end</key>
337*f4a2713aSLionel Sambuc // CHECK-NEXT:          <array>
338*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
339*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>19</integer>
340*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>3</integer>
341*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
342*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
343*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
344*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>19</integer>
345*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>8</integer>
346*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
347*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
348*f4a2713aSLionel Sambuc // CHECK-NEXT:          </array>
349*f4a2713aSLionel Sambuc // CHECK-NEXT:        </dict>
350*f4a2713aSLionel Sambuc // CHECK-NEXT:       </array>
351*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
352*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
353*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>event</string>
354*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>location</key>
355*f4a2713aSLionel Sambuc // CHECK-NEXT:      <dict>
356*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>line</key><integer>19</integer>
357*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>col</key><integer>3</integer>
358*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>file</key><integer>0</integer>
359*f4a2713aSLionel Sambuc // CHECK-NEXT:      </dict>
360*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>ranges</key>
361*f4a2713aSLionel Sambuc // CHECK-NEXT:      <array>
362*f4a2713aSLionel Sambuc // CHECK-NEXT:        <array>
363*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
364*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>19</integer>
365*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>3</integer>
366*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
367*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
368*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
369*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>19</integer>
370*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>13</integer>
371*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
372*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
373*f4a2713aSLionel Sambuc // CHECK-NEXT:        </array>
374*f4a2713aSLionel Sambuc // CHECK-NEXT:      </array>
375*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>depth</key><integer>1</integer>
376*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>extended_message</key>
377*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Memory is released</string>
378*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>message</key>
379*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Memory is released</string>
380*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
381*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
382*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>event</string>
383*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>location</key>
384*f4a2713aSLionel Sambuc // CHECK-NEXT:      <dict>
385*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>line</key><integer>24</integer>
386*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>col</key><integer>2</integer>
387*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>file</key><integer>0</integer>
388*f4a2713aSLionel Sambuc // CHECK-NEXT:      </dict>
389*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>ranges</key>
390*f4a2713aSLionel Sambuc // CHECK-NEXT:      <array>
391*f4a2713aSLionel Sambuc // CHECK-NEXT:        <array>
392*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
393*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>24</integer>
394*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>2</integer>
395*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
396*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
397*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
398*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>24</integer>
399*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>12</integer>
400*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
401*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
402*f4a2713aSLionel Sambuc // CHECK-NEXT:        </array>
403*f4a2713aSLionel Sambuc // CHECK-NEXT:      </array>
404*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>depth</key><integer>0</integer>
405*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>extended_message</key>
406*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Returning; memory was released</string>
407*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>message</key>
408*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Returning; memory was released</string>
409*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
410*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
411*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>control</string>
412*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>edges</key>
413*f4a2713aSLionel Sambuc // CHECK-NEXT:       <array>
414*f4a2713aSLionel Sambuc // CHECK-NEXT:        <dict>
415*f4a2713aSLionel Sambuc // CHECK-NEXT:         <key>start</key>
416*f4a2713aSLionel Sambuc // CHECK-NEXT:          <array>
417*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
418*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>24</integer>
419*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>2</integer>
420*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
421*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
422*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
423*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>24</integer>
424*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>4</integer>
425*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
426*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
427*f4a2713aSLionel Sambuc // CHECK-NEXT:          </array>
428*f4a2713aSLionel Sambuc // CHECK-NEXT:         <key>end</key>
429*f4a2713aSLionel Sambuc // CHECK-NEXT:          <array>
430*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
431*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>26</integer>
432*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>2</integer>
433*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
434*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
435*f4a2713aSLionel Sambuc // CHECK-NEXT:           <dict>
436*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>line</key><integer>26</integer>
437*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>col</key><integer>7</integer>
438*f4a2713aSLionel Sambuc // CHECK-NEXT:            <key>file</key><integer>0</integer>
439*f4a2713aSLionel Sambuc // CHECK-NEXT:           </dict>
440*f4a2713aSLionel Sambuc // CHECK-NEXT:          </array>
441*f4a2713aSLionel Sambuc // CHECK-NEXT:        </dict>
442*f4a2713aSLionel Sambuc // CHECK-NEXT:       </array>
443*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
444*f4a2713aSLionel Sambuc // CHECK-NEXT:     <dict>
445*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>kind</key><string>event</string>
446*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>location</key>
447*f4a2713aSLionel Sambuc // CHECK-NEXT:      <dict>
448*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>line</key><integer>26</integer>
449*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>col</key><integer>2</integer>
450*f4a2713aSLionel Sambuc // CHECK-NEXT:       <key>file</key><integer>0</integer>
451*f4a2713aSLionel Sambuc // CHECK-NEXT:      </dict>
452*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>ranges</key>
453*f4a2713aSLionel Sambuc // CHECK-NEXT:      <array>
454*f4a2713aSLionel Sambuc // CHECK-NEXT:        <array>
455*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
456*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>26</integer>
457*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>2</integer>
458*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
459*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
460*f4a2713aSLionel Sambuc // CHECK-NEXT:         <dict>
461*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>line</key><integer>26</integer>
462*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>col</key><integer>11</integer>
463*f4a2713aSLionel Sambuc // CHECK-NEXT:          <key>file</key><integer>0</integer>
464*f4a2713aSLionel Sambuc // CHECK-NEXT:         </dict>
465*f4a2713aSLionel Sambuc // CHECK-NEXT:        </array>
466*f4a2713aSLionel Sambuc // CHECK-NEXT:      </array>
467*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>depth</key><integer>0</integer>
468*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>extended_message</key>
469*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Attempt to free released memory</string>
470*f4a2713aSLionel Sambuc // CHECK-NEXT:      <key>message</key>
471*f4a2713aSLionel Sambuc // CHECK-NEXT:      <string>Attempt to free released memory</string>
472*f4a2713aSLionel Sambuc // CHECK-NEXT:     </dict>
473*f4a2713aSLionel Sambuc // CHECK-NEXT:    </array>
474*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>description</key><string>Attempt to free released memory</string>
475*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>category</key><string>Memory Error</string>
476*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>type</key><string>Double free</string>
477*f4a2713aSLionel Sambuc // CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
478*f4a2713aSLionel Sambuc // CHECK-NEXT:   <key>issue_context</key><string>test</string>
479*f4a2713aSLionel Sambuc // CHECK-NEXT:   <key>issue_hash</key><string>3</string>
480*f4a2713aSLionel Sambuc // CHECK-NEXT:   <key>location</key>
481*f4a2713aSLionel Sambuc // CHECK-NEXT:   <dict>
482*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>line</key><integer>26</integer>
483*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>col</key><integer>2</integer>
484*f4a2713aSLionel Sambuc // CHECK-NEXT:    <key>file</key><integer>0</integer>
485*f4a2713aSLionel Sambuc // CHECK-NEXT:   </dict>
486*f4a2713aSLionel Sambuc // CHECK-NEXT:   </dict>
487*f4a2713aSLionel Sambuc // CHECK-NEXT:  </array>
488