Bug Summary

File:root/firefox-clang/gfx/cairo/cairo/src/cairo-spans.c
Warning:line 77, column 5
Value stored to 'status' is never read

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-pc-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name Unified_c_gfx_cairo_cairo_src4.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -analyzer-config-compatibility-mode=true -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -relaxed-aliasing -ffp-contract=off -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/root/firefox-clang/obj-x86_64-pc-linux-gnu/gfx/cairo/cairo/src -fcoverage-compilation-dir=/root/firefox-clang/obj-x86_64-pc-linux-gnu/gfx/cairo/cairo/src -resource-dir /usr/lib/llvm-21/lib/clang/21 -include /root/firefox-clang/config/gcc_hidden.h -include /root/firefox-clang/obj-x86_64-pc-linux-gnu/mozilla-config.h -I /root/firefox-clang/obj-x86_64-pc-linux-gnu/dist/system_wrappers -U _FORTIFY_SOURCE -D _FORTIFY_SOURCE=2 -D _GLIBCXX_ASSERTIONS -D DEBUG=1 -D HAVE_FT_LOAD_SFNT_TABLE -D PACKAGE_VERSION="moz" -D PACKAGE_BUGREPORT="http://bugzilla.mozilla.org/" -D CAIRO_HAS_PTHREAD -D _GNU_SOURCE -D MOZ_TREE_PIXMAN -D SIZEOF_VOID_P=__SIZEOF_POINTER__ -D SIZEOF_INT=__SIZEOF_INT__ -D SIZEOF_LONG=__SIZEOF_LONG__ -D SIZEOF_LONG_LONG=__SIZEOF_LONG_LONG__ -D HAVE_UINT64_T -D HAVE_CXX11_ATOMIC_PRIMITIVES -D MOZ_HAS_MOZGLUE -D MOZILLA_INTERNAL_API -D IMPL_LIBXUL -D MOZ_SUPPORT_LEAKCHECKING -D STATIC_EXPORTABLE_JS_API -I /root/firefox-clang/gfx/cairo/cairo/src -I /root/firefox-clang/obj-x86_64-pc-linux-gnu/gfx/cairo/cairo/src -I /root/firefox-clang/obj-x86_64-pc-linux-gnu/dist/include -I /root/firefox-clang/obj-x86_64-pc-linux-gnu/dist/include/nspr -I /root/firefox-clang/obj-x86_64-pc-linux-gnu/dist/include/nss -D MOZILLA_CLIENT -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/freetype2 -I /usr/include/libpng16 -internal-isystem /usr/lib/llvm-21/lib/clang/21/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-error=tautological-type-limit-compare -Wno-range-loop-analysis -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=atomic-alignment -Wno-error=deprecated-builtins -Wno-psabi -Wno-error=builtin-macro-redefined -Wno-unknown-warning-option -Wno-enum-compare -Wno-int-to-pointer-cast -Wno-int-conversion -Wno-incompatible-pointer-types -Wno-sign-compare -Wno-type-limits -Wno-missing-field-initializers -Wno-conversion -Wno-narrowing -Wno-switch -Wno-unused -Wno-unused-variable -Wno-error=uninitialized -Wno-absolute-value -Wno-deprecated-register -Wno-incompatible-pointer-types -Wno-macro-redefined -Wno-shift-negative-value -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-unreachable-code -ferror-limit 19 -fstrict-flex-arrays=1 -stack-protector 2 -fstack-clash-protection -ftrivial-auto-var-init=pattern -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -vectorize-loops -vectorize-slp -analyzer-checker optin.performance.Padding -analyzer-output=html -analyzer-config stable-report-filename=true -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/scan-build-2025-06-26-231904-1820671-1 -x c Unified_c_gfx_cairo_cairo_src4.c
1/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */
2/* cairo - a vector graphics library with display and print output
3 *
4 * Copyright (c) 2008 M Joonas Pihlaja
5 *
6 * Permission is hereby granted, free of charge, to any person
7 * obtaining a copy of this software and associated documentation
8 * files (the "Software"), to deal in the Software without
9 * restriction, including without limitation the rights to use,
10 * copy, modify, merge, publish, distribute, sublicense, and/or sell
11 * copies of the Software, and to permit persons to whom the
12 * Software is furnished to do so, subject to the following
13 * conditions:
14 *
15 * The above copyright notice and this permission notice shall be
16 * included in all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
20 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25 * OTHER DEALINGS IN THE SOFTWARE.
26 */
27#include "cairoint.h"
28
29#include "cairo-composite-rectangles-private.h"
30#include "cairo-clip-private.h"
31#include "cairo-error-private.h"
32#include "cairo-fixed-private.h"
33#include "cairo-types-private.h"
34
35static void
36_cairo_nil_destroy (void *abstract)
37{
38 (void) abstract;
39}
40
41static cairo_status_t
42_cairo_nil_scan_converter_generate (void *abstract_converter,
43 cairo_span_renderer_t *renderer)
44{
45 (void) abstract_converter;
46 (void) renderer;
47 return _cairo_scan_converter_status (abstract_converter);
48}
49
50cairo_status_t
51_cairo_scan_converter_status (void *abstract_converter)
52{
53 cairo_scan_converter_t *converter = abstract_converter;
54 return converter->status;
55}
56
57cairo_status_t
58_cairo_scan_converter_set_error (void *abstract_converter,
59 cairo_status_t error)
60{
61 cairo_scan_converter_t *converter = abstract_converter;
62 if (error == CAIRO_STATUS_SUCCESS)
63 ASSERT_NOT_REACHEDdo { ((void) sizeof ((!"reached") ? 1 : 0), __extension__ ({ if
(!"reached") ; else __assert_fail ("!\"reached\"", "/root/firefox-clang/gfx/cairo/cairo/src/cairo-spans.c"
, 63, __extension__ __PRETTY_FUNCTION__); })); } while (0)
;
64 if (converter->status == CAIRO_STATUS_SUCCESS) {
65 converter->generate = _cairo_nil_scan_converter_generate;
66 converter->status = error;
67 }
68 return converter->status;
69}
70
71static void
72_cairo_nil_scan_converter_init (cairo_scan_converter_t *converter,
73 cairo_status_t status)
74{
75 converter->destroy = _cairo_nil_destroy;
76 converter->status = CAIRO_STATUS_SUCCESS;
77 status = _cairo_scan_converter_set_error (converter, status);
Value stored to 'status' is never read
78}
79
80cairo_scan_converter_t *
81_cairo_scan_converter_create_in_error (cairo_status_t status)
82{
83#define RETURN_NIL {\
84 static cairo_scan_converter_t nil;\
85 _cairo_nil_scan_converter_init (&nil, status);\
86 return &nil;\
87 }
88 switch (status) {
89 case CAIRO_STATUS_SUCCESS:
90 case CAIRO_STATUS_LAST_STATUS:
91 ASSERT_NOT_REACHEDdo { ((void) sizeof ((!"reached") ? 1 : 0), __extension__ ({ if
(!"reached") ; else __assert_fail ("!\"reached\"", "/root/firefox-clang/gfx/cairo/cairo/src/cairo-spans.c"
, 91, __extension__ __PRETTY_FUNCTION__); })); } while (0)
;
92 break;
93 case CAIRO_STATUS_INVALID_RESTORE: RETURN_NIL;
94 case CAIRO_STATUS_INVALID_POP_GROUP: RETURN_NIL;
95 case CAIRO_STATUS_NO_CURRENT_POINT: RETURN_NIL;
96 case CAIRO_STATUS_INVALID_MATRIX: RETURN_NIL;
97 case CAIRO_STATUS_INVALID_STATUS: RETURN_NIL;
98 case CAIRO_STATUS_NULL_POINTER: RETURN_NIL;
99 case CAIRO_STATUS_INVALID_STRING: RETURN_NIL;
100 case CAIRO_STATUS_INVALID_PATH_DATA: RETURN_NIL;
101 case CAIRO_STATUS_READ_ERROR: RETURN_NIL;
102 case CAIRO_STATUS_WRITE_ERROR: RETURN_NIL;
103 case CAIRO_STATUS_SURFACE_FINISHED: RETURN_NIL;
104 case CAIRO_STATUS_SURFACE_TYPE_MISMATCH: RETURN_NIL;
105 case CAIRO_STATUS_PATTERN_TYPE_MISMATCH: RETURN_NIL;
106 case CAIRO_STATUS_INVALID_CONTENT: RETURN_NIL;
107 case CAIRO_STATUS_INVALID_FORMAT: RETURN_NIL;
108 case CAIRO_STATUS_INVALID_VISUAL: RETURN_NIL;
109 case CAIRO_STATUS_FILE_NOT_FOUND: RETURN_NIL;
110 case CAIRO_STATUS_INVALID_DASH: RETURN_NIL;
111 case CAIRO_STATUS_INVALID_DSC_COMMENT: RETURN_NIL;
112 case CAIRO_STATUS_INVALID_INDEX: RETURN_NIL;
113 case CAIRO_STATUS_CLIP_NOT_REPRESENTABLE: RETURN_NIL;
114 case CAIRO_STATUS_TEMP_FILE_ERROR: RETURN_NIL;
115 case CAIRO_STATUS_INVALID_STRIDE: RETURN_NIL;
116 case CAIRO_STATUS_FONT_TYPE_MISMATCH: RETURN_NIL;
117 case CAIRO_STATUS_USER_FONT_IMMUTABLE: RETURN_NIL;
118 case CAIRO_STATUS_USER_FONT_ERROR: RETURN_NIL;
119 case CAIRO_STATUS_NEGATIVE_COUNT: RETURN_NIL;
120 case CAIRO_STATUS_INVALID_CLUSTERS: RETURN_NIL;
121 case CAIRO_STATUS_INVALID_SLANT: RETURN_NIL;
122 case CAIRO_STATUS_INVALID_WEIGHT: RETURN_NIL;
123 case CAIRO_STATUS_NO_MEMORY: RETURN_NIL;
124 case CAIRO_STATUS_INVALID_SIZE: RETURN_NIL;
125 case CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: RETURN_NIL;
126 case CAIRO_STATUS_DEVICE_TYPE_MISMATCH: RETURN_NIL;
127 case CAIRO_STATUS_DEVICE_ERROR: RETURN_NIL;
128 case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: RETURN_NIL;
129 case CAIRO_STATUS_DEVICE_FINISHED: RETURN_NIL;
130 case CAIRO_STATUS_JBIG2_GLOBAL_MISSING:
131 case CAIRO_STATUS_PNG_ERROR:
132 case CAIRO_STATUS_FREETYPE_ERROR:
133 case CAIRO_STATUS_WIN32_GDI_ERROR:
134 case CAIRO_STATUS_TAG_ERROR:
135 case CAIRO_STATUS_DWRITE_ERROR:
136 case CAIRO_STATUS_SVG_FONT_ERROR:
137 default:
138 break;
139 }
140 status = CAIRO_STATUS_NO_MEMORY;
141 RETURN_NIL;
142#undef RETURN_NIL
143}
144
145static cairo_status_t
146_cairo_nil_span_renderer_render_rows (
147 void *abstract_renderer,
148 int y,
149 int height,
150 const cairo_half_open_span_t *coverages,
151 unsigned num_coverages)
152{
153 (void) y;
154 (void) height;
155 (void) coverages;
156 (void) num_coverages;
157 return _cairo_span_renderer_status (abstract_renderer);
158}
159
160static cairo_status_t
161_cairo_nil_span_renderer_finish (void *abstract_renderer)
162{
163 return _cairo_span_renderer_status (abstract_renderer);
164}
165
166cairo_status_t
167_cairo_span_renderer_status (void *abstract_renderer)
168{
169 cairo_span_renderer_t *renderer = abstract_renderer;
170 return renderer->status;
171}
172
173cairo_status_t
174_cairo_span_renderer_set_error (
175 void *abstract_renderer,
176 cairo_status_t error)
177{
178 cairo_span_renderer_t *renderer = abstract_renderer;
179 if (error == CAIRO_STATUS_SUCCESS) {
180 ASSERT_NOT_REACHEDdo { ((void) sizeof ((!"reached") ? 1 : 0), __extension__ ({ if
(!"reached") ; else __assert_fail ("!\"reached\"", "/root/firefox-clang/gfx/cairo/cairo/src/cairo-spans.c"
, 180, __extension__ __PRETTY_FUNCTION__); })); } while (0)
;
181 }
182 if (renderer->status == CAIRO_STATUS_SUCCESS) {
183 renderer->render_rows = _cairo_nil_span_renderer_render_rows;
184 renderer->finish = _cairo_nil_span_renderer_finish;
185 renderer->status = error;
186 }
187 return renderer->status;
188}
189
190static void
191_cairo_nil_span_renderer_init (cairo_span_renderer_t *renderer,
192 cairo_status_t status)
193{
194 renderer->destroy = _cairo_nil_destroy;
195 renderer->status = CAIRO_STATUS_SUCCESS;
196 status = _cairo_span_renderer_set_error (renderer, status);
197}
198
199cairo_span_renderer_t *
200_cairo_span_renderer_create_in_error (cairo_status_t status)
201{
202#define RETURN_NIL {\
203 static cairo_span_renderer_t nil;\
204 _cairo_nil_span_renderer_init (&nil, status);\
205 return &nil;\
206 }
207 switch (status) {
208 case CAIRO_STATUS_SUCCESS:
209 case CAIRO_STATUS_LAST_STATUS:
210 ASSERT_NOT_REACHEDdo { ((void) sizeof ((!"reached") ? 1 : 0), __extension__ ({ if
(!"reached") ; else __assert_fail ("!\"reached\"", "/root/firefox-clang/gfx/cairo/cairo/src/cairo-spans.c"
, 210, __extension__ __PRETTY_FUNCTION__); })); } while (0)
;
211 break;
212 case CAIRO_STATUS_INVALID_RESTORE: RETURN_NIL;
213 case CAIRO_STATUS_INVALID_POP_GROUP: RETURN_NIL;
214 case CAIRO_STATUS_NO_CURRENT_POINT: RETURN_NIL;
215 case CAIRO_STATUS_INVALID_MATRIX: RETURN_NIL;
216 case CAIRO_STATUS_INVALID_STATUS: RETURN_NIL;
217 case CAIRO_STATUS_NULL_POINTER: RETURN_NIL;
218 case CAIRO_STATUS_INVALID_STRING: RETURN_NIL;
219 case CAIRO_STATUS_INVALID_PATH_DATA: RETURN_NIL;
220 case CAIRO_STATUS_READ_ERROR: RETURN_NIL;
221 case CAIRO_STATUS_WRITE_ERROR: RETURN_NIL;
222 case CAIRO_STATUS_SURFACE_FINISHED: RETURN_NIL;
223 case CAIRO_STATUS_SURFACE_TYPE_MISMATCH: RETURN_NIL;
224 case CAIRO_STATUS_PATTERN_TYPE_MISMATCH: RETURN_NIL;
225 case CAIRO_STATUS_INVALID_CONTENT: RETURN_NIL;
226 case CAIRO_STATUS_INVALID_FORMAT: RETURN_NIL;
227 case CAIRO_STATUS_INVALID_VISUAL: RETURN_NIL;
228 case CAIRO_STATUS_FILE_NOT_FOUND: RETURN_NIL;
229 case CAIRO_STATUS_INVALID_DASH: RETURN_NIL;
230 case CAIRO_STATUS_INVALID_DSC_COMMENT: RETURN_NIL;
231 case CAIRO_STATUS_INVALID_INDEX: RETURN_NIL;
232 case CAIRO_STATUS_CLIP_NOT_REPRESENTABLE: RETURN_NIL;
233 case CAIRO_STATUS_TEMP_FILE_ERROR: RETURN_NIL;
234 case CAIRO_STATUS_INVALID_STRIDE: RETURN_NIL;
235 case CAIRO_STATUS_FONT_TYPE_MISMATCH: RETURN_NIL;
236 case CAIRO_STATUS_USER_FONT_IMMUTABLE: RETURN_NIL;
237 case CAIRO_STATUS_USER_FONT_ERROR: RETURN_NIL;
238 case CAIRO_STATUS_NEGATIVE_COUNT: RETURN_NIL;
239 case CAIRO_STATUS_INVALID_CLUSTERS: RETURN_NIL;
240 case CAIRO_STATUS_INVALID_SLANT: RETURN_NIL;
241 case CAIRO_STATUS_INVALID_WEIGHT: RETURN_NIL;
242 case CAIRO_STATUS_NO_MEMORY: RETURN_NIL;
243 case CAIRO_STATUS_INVALID_SIZE: RETURN_NIL;
244 case CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: RETURN_NIL;
245 case CAIRO_STATUS_DEVICE_TYPE_MISMATCH: RETURN_NIL;
246 case CAIRO_STATUS_DEVICE_ERROR: RETURN_NIL;
247 case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: RETURN_NIL;
248 case CAIRO_STATUS_DEVICE_FINISHED: RETURN_NIL;
249 case CAIRO_STATUS_JBIG2_GLOBAL_MISSING: RETURN_NIL;
250 case CAIRO_STATUS_PNG_ERROR: RETURN_NIL;
251 case CAIRO_STATUS_FREETYPE_ERROR: RETURN_NIL;
252 case CAIRO_STATUS_WIN32_GDI_ERROR: RETURN_NIL;
253 case CAIRO_STATUS_TAG_ERROR: RETURN_NIL;
254 case CAIRO_STATUS_DWRITE_ERROR: RETURN_NIL;
255 case CAIRO_STATUS_SVG_FONT_ERROR: RETURN_NIL;
256 default:
257 break;
258 }
259 status = CAIRO_STATUS_NO_MEMORY;
260 RETURN_NIL;
261#undef RETURN_NIL
262}