/src/cairo/src/cairo-malloc-private.h
Line | Count | Source |
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 © 2007 Mozilla Corporation |
5 | | * |
6 | | * This library is free software; you can redistribute it and/or |
7 | | * modify it either under the terms of the GNU Lesser General Public |
8 | | * License version 2.1 as published by the Free Software Foundation |
9 | | * (the "LGPL") or, at your option, under the terms of the Mozilla |
10 | | * Public License Version 1.1 (the "MPL"). If you do not alter this |
11 | | * notice, a recipient may use your version of this file under either |
12 | | * the MPL or the LGPL. |
13 | | * |
14 | | * You should have received a copy of the LGPL along with this library |
15 | | * in the file COPYING-LGPL-2.1; if not, write to the Free Software |
16 | | * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA |
17 | | * You should have received a copy of the MPL along with this library |
18 | | * in the file COPYING-MPL-1.1 |
19 | | * |
20 | | * The contents of this file are subject to the Mozilla Public License |
21 | | * Version 1.1 (the "License"); you may not use this file except in |
22 | | * compliance with the License. You may obtain a copy of the License at |
23 | | * http://www.mozilla.org/MPL/ |
24 | | * |
25 | | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY |
26 | | * OF ANY KIND, either express or implied. See the LGPL or the MPL for |
27 | | * the specific language governing rights and limitations. |
28 | | * |
29 | | * The Original Code is the cairo graphics library. |
30 | | * |
31 | | * The Initial Developer of the Original Code is Mozilla Foundation |
32 | | * |
33 | | * Contributor(s): |
34 | | * Vladimir Vukicevic <vladimir@pobox.com> |
35 | | */ |
36 | | |
37 | | #ifndef CAIRO_MALLOC_PRIVATE_H |
38 | | #define CAIRO_MALLOC_PRIVATE_H |
39 | | |
40 | | #include "cairo-wideint-private.h" |
41 | | #include <stdlib.h> |
42 | | |
43 | | #if HAVE_MEMFAULT |
44 | | #include <memfault.h> |
45 | | #define CAIRO_INJECT_FAULT() MEMFAULT_INJECT_FAULT() |
46 | | #else |
47 | 13.5M | #define CAIRO_INJECT_FAULT() 0 |
48 | | #endif |
49 | | |
50 | | /** |
51 | | * _cairo_malloc: |
52 | | * @size: size in bytes |
53 | | * |
54 | | * Allocate @size memory using malloc(). |
55 | | * The memory should be freed using free(). |
56 | | * malloc is skipped, if 0 bytes are requested, and %NULL will be returned. |
57 | | * |
58 | | * Return value: A pointer to the newly allocated memory, or %NULL in |
59 | | * case of malloc() failure or size is 0. |
60 | | **/ |
61 | | |
62 | | #define _cairo_malloc(size) \ |
63 | 1.20M | ((size) != 0 ? malloc(size) : NULL) |
64 | | |
65 | | /** |
66 | | * _cairo_calloc: |
67 | | * @size: size of each element |
68 | | * |
69 | | * Allocates @size memory using calloc(). Behaves much like |
70 | | * calloc(), except that only one parameter is required. |
71 | | * The memory should be freed using free(). |
72 | | * calloc is skipped, if 0 bytes are requested, and %NULL will be returned. |
73 | | * |
74 | | * Return value: A pointer to the newly allocated memory, or %NULL in |
75 | | * case of calloc() failure or overflow. |
76 | | **/ |
77 | | |
78 | | #define _cairo_calloc(size) \ |
79 | 1.29M | ((size) != 0 ? calloc(1,size) : NULL) |
80 | | |
81 | | /** |
82 | | * _cairo_malloc_ab: |
83 | | * @a: number of elements to allocate |
84 | | * @size: size of each element |
85 | | * |
86 | | * Allocates @a*@size memory using _cairo_malloc(), taking care to not |
87 | | * overflow when doing the multiplication. Behaves much like |
88 | | * calloc(), except that the returned memory is not set to zero. |
89 | | * The memory should be freed using free(). |
90 | | * |
91 | | * @size should be a constant so that the compiler can optimize |
92 | | * out a constant division. |
93 | | * |
94 | | * Return value: A pointer to the newly allocated memory, or %NULL in |
95 | | * case of malloc() failure or overflow. |
96 | | **/ |
97 | | |
98 | | static cairo_always_inline void * |
99 | | _cairo_malloc_ab(size_t a, size_t size) |
100 | 994k | { |
101 | 994k | size_t c; |
102 | 994k | if (_cairo_mul_size_t_overflow (a, size, &c)) |
103 | 0 | return NULL; |
104 | | |
105 | 994k | return _cairo_malloc(c); |
106 | 994k | } Unexecuted instantiation: cairo-font-face.c:_cairo_malloc_ab Unexecuted instantiation: cairo-font-options.c:_cairo_malloc_ab Unexecuted instantiation: cairo-image-surface.c:_cairo_malloc_ab Unexecuted instantiation: cairo-matrix.c:_cairo_malloc_ab cairo-misc.c:_cairo_malloc_ab Line | Count | Source | 100 | 13.3k | { | 101 | 13.3k | size_t c; | 102 | 13.3k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 13.3k | return _cairo_malloc(c); | 106 | 13.3k | } |
Unexecuted instantiation: cairo-mutex.c:_cairo_malloc_ab cairo-path.c:_cairo_malloc_ab Line | Count | Source | 100 | 20 | { | 101 | 20 | size_t c; | 102 | 20 | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 20 | return _cairo_malloc(c); | 106 | 20 | } |
cairo-pattern.c:_cairo_malloc_ab Line | Count | Source | 100 | 2.04k | { | 101 | 2.04k | size_t c; | 102 | 2.04k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 2.04k | return _cairo_malloc(c); | 106 | 2.04k | } |
Unexecuted instantiation: cairo-raster-source-pattern.c:_cairo_malloc_ab cairo-recording-surface.c:_cairo_malloc_ab Line | Count | Source | 100 | 926k | { | 101 | 926k | size_t c; | 102 | 926k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 926k | return _cairo_malloc(c); | 106 | 926k | } |
Unexecuted instantiation: cairo-rectangle.c:_cairo_malloc_ab Unexecuted instantiation: cairo-region.c:_cairo_malloc_ab Unexecuted instantiation: cairo-scaled-font.c:_cairo_malloc_ab Unexecuted instantiation: cairo-spline.c:_cairo_malloc_ab cairo-stroke-style.c:_cairo_malloc_ab Line | Count | Source | 100 | 1.35k | { | 101 | 1.35k | size_t c; | 102 | 1.35k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 1.35k | return _cairo_malloc(c); | 106 | 1.35k | } |
Unexecuted instantiation: cairo-surface-snapshot.c:_cairo_malloc_ab cairo-surface-wrapper.c:_cairo_malloc_ab Line | Count | Source | 100 | 234 | { | 101 | 234 | size_t c; | 102 | 234 | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 234 | return _cairo_malloc(c); | 106 | 234 | } |
Unexecuted instantiation: cairo-surface.c:_cairo_malloc_ab Unexecuted instantiation: cairo-traps.c:_cairo_malloc_ab cairo-unicode.c:_cairo_malloc_ab Line | Count | Source | 100 | 32.6k | { | 101 | 32.6k | size_t c; | 102 | 32.6k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 32.6k | return _cairo_malloc(c); | 106 | 32.6k | } |
Unexecuted instantiation: cairo-user-font.c:_cairo_malloc_ab Unexecuted instantiation: cairo.c:_cairo_malloc_ab Unexecuted instantiation: cairo-ft-font.c:_cairo_malloc_ab Unexecuted instantiation: cairo-colr-glyph-render.c:_cairo_malloc_ab Unexecuted instantiation: cairo-svg-glyph-render.c:_cairo_malloc_ab Unexecuted instantiation: cairo-analysis-surface.c:_cairo_malloc_ab Unexecuted instantiation: cairo-array.c:_cairo_malloc_ab cairo-boxes.c:_cairo_malloc_ab Line | Count | Source | 100 | 322 | { | 101 | 322 | size_t c; | 102 | 322 | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 322 | return _cairo_malloc(c); | 106 | 322 | } |
Unexecuted instantiation: cairo-cache.c:_cairo_malloc_ab Unexecuted instantiation: cairo-clip-boxes.c:_cairo_malloc_ab cairo-clip.c:_cairo_malloc_ab Line | Count | Source | 100 | 1.66k | { | 101 | 1.66k | size_t c; | 102 | 1.66k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 1.66k | return _cairo_malloc(c); | 106 | 1.66k | } |
Unexecuted instantiation: cairo-color.c:_cairo_malloc_ab Unexecuted instantiation: cairo-composite-rectangles.c:_cairo_malloc_ab Unexecuted instantiation: cairo-compositor.c:_cairo_malloc_ab Unexecuted instantiation: cairo-damage.c:_cairo_malloc_ab Unexecuted instantiation: cairo-debug.c:_cairo_malloc_ab Unexecuted instantiation: cairo-default-context.c:_cairo_malloc_ab Unexecuted instantiation: cairo-device.c:_cairo_malloc_ab Unexecuted instantiation: cairo-error.c:_cairo_malloc_ab Unexecuted instantiation: cairo-font-face-twin.c:_cairo_malloc_ab Unexecuted instantiation: cairo-freed-pool.c:_cairo_malloc_ab cairo-gstate.c:_cairo_malloc_ab Line | Count | Source | 100 | 1.33k | { | 101 | 1.33k | size_t c; | 102 | 1.33k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 1.33k | return _cairo_malloc(c); | 106 | 1.33k | } |
Unexecuted instantiation: cairo-hash.c:_cairo_malloc_ab Unexecuted instantiation: cairo-image-compositor.c:_cairo_malloc_ab cairo-image-source.c:_cairo_malloc_ab Line | Count | Source | 100 | 6 | { | 101 | 6 | size_t c; | 102 | 6 | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 6 | return _cairo_malloc(c); | 106 | 6 | } |
Unexecuted instantiation: cairo-line.c:_cairo_malloc_ab Unexecuted instantiation: cairo-mask-compositor.c:_cairo_malloc_ab Unexecuted instantiation: cairo-mesh-pattern-rasterizer.c:_cairo_malloc_ab Unexecuted instantiation: cairo-mono-scan-converter.c:_cairo_malloc_ab Unexecuted instantiation: cairo-no-compositor.c:_cairo_malloc_ab Unexecuted instantiation: cairo-observer.c:_cairo_malloc_ab Unexecuted instantiation: cairo-path-bounds.c:_cairo_malloc_ab Unexecuted instantiation: cairo-path-fill.c:_cairo_malloc_ab Unexecuted instantiation: cairo-path-fixed.c:_cairo_malloc_ab Unexecuted instantiation: cairo-path-in-fill.c:_cairo_malloc_ab Unexecuted instantiation: cairo-path-stroke-boxes.c:_cairo_malloc_ab Unexecuted instantiation: cairo-path-stroke-polygon.c:_cairo_malloc_ab Unexecuted instantiation: cairo-path-stroke.c:_cairo_malloc_ab cairo-pen.c:_cairo_malloc_ab Line | Count | Source | 100 | 4 | { | 101 | 4 | size_t c; | 102 | 4 | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 4 | return _cairo_malloc(c); | 106 | 4 | } |
cairo-polygon.c:_cairo_malloc_ab Line | Count | Source | 100 | 9.96k | { | 101 | 9.96k | size_t c; | 102 | 9.96k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 9.96k | return _cairo_malloc(c); | 106 | 9.96k | } |
Unexecuted instantiation: cairo-shape-mask-compositor.c:_cairo_malloc_ab Unexecuted instantiation: cairo-slope.c:_cairo_malloc_ab Unexecuted instantiation: cairo-spans-compositor.c:_cairo_malloc_ab Unexecuted instantiation: cairo-spans.c:_cairo_malloc_ab Unexecuted instantiation: cairo-stroke-dash.c:_cairo_malloc_ab Unexecuted instantiation: cairo-surface-offset.c:_cairo_malloc_ab cairo-tor-scan-converter.c:_cairo_malloc_ab Line | Count | Source | 100 | 4 | { | 101 | 4 | size_t c; | 102 | 4 | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 4 | return _cairo_malloc(c); | 106 | 4 | } |
Unexecuted instantiation: cairo-tor22-scan-converter.c:_cairo_malloc_ab Unexecuted instantiation: cairo-toy-font-face.c:_cairo_malloc_ab Unexecuted instantiation: cairo-traps-compositor.c:_cairo_malloc_ab Unexecuted instantiation: cairo-png.c:_cairo_malloc_ab Unexecuted instantiation: cairo-arc.c:_cairo_malloc_ab Unexecuted instantiation: cairo-bentley-ottmann-rectangular.c:_cairo_malloc_ab Unexecuted instantiation: cairo-bentley-ottmann-rectilinear.c:_cairo_malloc_ab Unexecuted instantiation: cairo-bentley-ottmann.c:_cairo_malloc_ab Unexecuted instantiation: cairo-boxes-intersect.c:_cairo_malloc_ab Unexecuted instantiation: cairo-clip-polygon.c:_cairo_malloc_ab Unexecuted instantiation: cairo-clip-region.c:_cairo_malloc_ab Unexecuted instantiation: cairo-clip-surface.c:_cairo_malloc_ab Unexecuted instantiation: cairo-contour.c:_cairo_malloc_ab Unexecuted instantiation: cairo-font-face-twin-data.c:_cairo_malloc_ab Unexecuted instantiation: cairo-freelist.c:_cairo_malloc_ab Unexecuted instantiation: cairo-hull.c:_cairo_malloc_ab Unexecuted instantiation: cairo-output-stream.c:_cairo_malloc_ab Unexecuted instantiation: cairo-path-stroke-traps.c:_cairo_malloc_ab Unexecuted instantiation: cairo-polygon-intersect.c:_cairo_malloc_ab Unexecuted instantiation: cairo-polygon-reduce.c:_cairo_malloc_ab Unexecuted instantiation: cairo-rectangular-scan-converter.c:_cairo_malloc_ab Unexecuted instantiation: cairo-wideint.c:_cairo_malloc_ab cairo-pdf-surface.c:_cairo_malloc_ab Line | Count | Source | 100 | 4.27k | { | 101 | 4.27k | size_t c; | 102 | 4.27k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 4.27k | return _cairo_malloc(c); | 106 | 4.27k | } |
Unexecuted instantiation: cairo-pdf-interchange.c:_cairo_malloc_ab Unexecuted instantiation: cairo-image-info.c:_cairo_malloc_ab Unexecuted instantiation: cairo-paginated-surface.c:_cairo_malloc_ab Unexecuted instantiation: cairo-surface-clipper.c:_cairo_malloc_ab Unexecuted instantiation: cairo-version.c:_cairo_malloc_ab Unexecuted instantiation: cairo-cff-subset.c:_cairo_malloc_ab cairo-scaled-font-subsets.c:_cairo_malloc_ab Line | Count | Source | 100 | 524 | { | 101 | 524 | size_t c; | 102 | 524 | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 524 | return _cairo_malloc(c); | 106 | 524 | } |
Unexecuted instantiation: cairo-truetype-subset.c:_cairo_malloc_ab Unexecuted instantiation: cairo-type1-fallback.c:_cairo_malloc_ab Unexecuted instantiation: cairo-type1-glyph-names.c:_cairo_malloc_ab Unexecuted instantiation: cairo-type1-subset.c:_cairo_malloc_ab Unexecuted instantiation: cairo-type3-glyph-surface.c:_cairo_malloc_ab Unexecuted instantiation: cairo-pdf-operators.c:_cairo_malloc_ab cairo-pdf-shading.c:_cairo_malloc_ab Line | Count | Source | 100 | 11 | { | 101 | 11 | size_t c; | 102 | 11 | if (_cairo_mul_size_t_overflow (a, size, &c)) | 103 | 0 | return NULL; | 104 | | | 105 | 11 | return _cairo_malloc(c); | 106 | 11 | } |
Unexecuted instantiation: cairo-tag-attributes.c:_cairo_malloc_ab Unexecuted instantiation: cairo-tag-stack.c:_cairo_malloc_ab Unexecuted instantiation: cairo-deflate-stream.c:_cairo_malloc_ab |
107 | | |
108 | | /** |
109 | | * _cairo_calloc_ab: |
110 | | * @a: number of elements to allocate |
111 | | * @size: size of each element |
112 | | * |
113 | | * Allocates @a*@size memory using _cairo_calloc(), taking care to not |
114 | | * overflow when doing the multiplication. |
115 | | * |
116 | | * @size should be a constant so that the compiler can optimize |
117 | | * out a constant division. |
118 | | * |
119 | | * Return value: A pointer to the newly allocated memory, or %NULL in |
120 | | * case of calloc() failure or overflow. |
121 | | **/ |
122 | | |
123 | | static cairo_always_inline void * |
124 | | _cairo_calloc_ab(size_t a, size_t size) |
125 | 19.0k | { |
126 | 19.0k | size_t c; |
127 | 19.0k | if (_cairo_mul_size_t_overflow (a, size, &c)) |
128 | 0 | return NULL; |
129 | | |
130 | 19.0k | return _cairo_calloc(c); |
131 | 19.0k | } Unexecuted instantiation: cairo-font-face.c:_cairo_calloc_ab Unexecuted instantiation: cairo-font-options.c:_cairo_calloc_ab Unexecuted instantiation: cairo-image-surface.c:_cairo_calloc_ab Unexecuted instantiation: cairo-matrix.c:_cairo_calloc_ab Unexecuted instantiation: cairo-misc.c:_cairo_calloc_ab Unexecuted instantiation: cairo-mutex.c:_cairo_calloc_ab Unexecuted instantiation: cairo-path.c:_cairo_calloc_ab Unexecuted instantiation: cairo-pattern.c:_cairo_calloc_ab Unexecuted instantiation: cairo-raster-source-pattern.c:_cairo_calloc_ab Unexecuted instantiation: cairo-recording-surface.c:_cairo_calloc_ab Unexecuted instantiation: cairo-rectangle.c:_cairo_calloc_ab Unexecuted instantiation: cairo-region.c:_cairo_calloc_ab Unexecuted instantiation: cairo-scaled-font.c:_cairo_calloc_ab Unexecuted instantiation: cairo-spline.c:_cairo_calloc_ab Unexecuted instantiation: cairo-stroke-style.c:_cairo_calloc_ab Unexecuted instantiation: cairo-surface-snapshot.c:_cairo_calloc_ab Unexecuted instantiation: cairo-surface-wrapper.c:_cairo_calloc_ab Unexecuted instantiation: cairo-surface.c:_cairo_calloc_ab Unexecuted instantiation: cairo-traps.c:_cairo_calloc_ab Unexecuted instantiation: cairo-unicode.c:_cairo_calloc_ab Unexecuted instantiation: cairo-user-font.c:_cairo_calloc_ab Unexecuted instantiation: cairo.c:_cairo_calloc_ab Unexecuted instantiation: cairo-ft-font.c:_cairo_calloc_ab Unexecuted instantiation: cairo-colr-glyph-render.c:_cairo_calloc_ab Unexecuted instantiation: cairo-svg-glyph-render.c:_cairo_calloc_ab Unexecuted instantiation: cairo-analysis-surface.c:_cairo_calloc_ab Unexecuted instantiation: cairo-array.c:_cairo_calloc_ab Unexecuted instantiation: cairo-boxes.c:_cairo_calloc_ab Unexecuted instantiation: cairo-cache.c:_cairo_calloc_ab Unexecuted instantiation: cairo-clip-boxes.c:_cairo_calloc_ab Unexecuted instantiation: cairo-clip.c:_cairo_calloc_ab Unexecuted instantiation: cairo-color.c:_cairo_calloc_ab Unexecuted instantiation: cairo-composite-rectangles.c:_cairo_calloc_ab Unexecuted instantiation: cairo-compositor.c:_cairo_calloc_ab Unexecuted instantiation: cairo-damage.c:_cairo_calloc_ab Unexecuted instantiation: cairo-debug.c:_cairo_calloc_ab Unexecuted instantiation: cairo-default-context.c:_cairo_calloc_ab Unexecuted instantiation: cairo-device.c:_cairo_calloc_ab Unexecuted instantiation: cairo-error.c:_cairo_calloc_ab Unexecuted instantiation: cairo-font-face-twin.c:_cairo_calloc_ab Unexecuted instantiation: cairo-freed-pool.c:_cairo_calloc_ab Unexecuted instantiation: cairo-gstate.c:_cairo_calloc_ab cairo-hash.c:_cairo_calloc_ab Line | Count | Source | 125 | 14.4k | { | 126 | 14.4k | size_t c; | 127 | 14.4k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 128 | 0 | return NULL; | 129 | | | 130 | 14.4k | return _cairo_calloc(c); | 131 | 14.4k | } |
Unexecuted instantiation: cairo-image-compositor.c:_cairo_calloc_ab Unexecuted instantiation: cairo-image-source.c:_cairo_calloc_ab Unexecuted instantiation: cairo-line.c:_cairo_calloc_ab Unexecuted instantiation: cairo-mask-compositor.c:_cairo_calloc_ab Unexecuted instantiation: cairo-mesh-pattern-rasterizer.c:_cairo_calloc_ab Unexecuted instantiation: cairo-mono-scan-converter.c:_cairo_calloc_ab Unexecuted instantiation: cairo-no-compositor.c:_cairo_calloc_ab Unexecuted instantiation: cairo-observer.c:_cairo_calloc_ab Unexecuted instantiation: cairo-path-bounds.c:_cairo_calloc_ab Unexecuted instantiation: cairo-path-fill.c:_cairo_calloc_ab Unexecuted instantiation: cairo-path-fixed.c:_cairo_calloc_ab Unexecuted instantiation: cairo-path-in-fill.c:_cairo_calloc_ab Unexecuted instantiation: cairo-path-stroke-boxes.c:_cairo_calloc_ab Unexecuted instantiation: cairo-path-stroke-polygon.c:_cairo_calloc_ab Unexecuted instantiation: cairo-path-stroke.c:_cairo_calloc_ab Unexecuted instantiation: cairo-pen.c:_cairo_calloc_ab Unexecuted instantiation: cairo-polygon.c:_cairo_calloc_ab Unexecuted instantiation: cairo-shape-mask-compositor.c:_cairo_calloc_ab Unexecuted instantiation: cairo-slope.c:_cairo_calloc_ab Unexecuted instantiation: cairo-spans-compositor.c:_cairo_calloc_ab Unexecuted instantiation: cairo-spans.c:_cairo_calloc_ab Unexecuted instantiation: cairo-stroke-dash.c:_cairo_calloc_ab Unexecuted instantiation: cairo-surface-offset.c:_cairo_calloc_ab Unexecuted instantiation: cairo-tor-scan-converter.c:_cairo_calloc_ab Unexecuted instantiation: cairo-tor22-scan-converter.c:_cairo_calloc_ab Unexecuted instantiation: cairo-toy-font-face.c:_cairo_calloc_ab Unexecuted instantiation: cairo-traps-compositor.c:_cairo_calloc_ab Unexecuted instantiation: cairo-png.c:_cairo_calloc_ab Unexecuted instantiation: cairo-arc.c:_cairo_calloc_ab Unexecuted instantiation: cairo-bentley-ottmann-rectangular.c:_cairo_calloc_ab Unexecuted instantiation: cairo-bentley-ottmann-rectilinear.c:_cairo_calloc_ab Unexecuted instantiation: cairo-bentley-ottmann.c:_cairo_calloc_ab Unexecuted instantiation: cairo-boxes-intersect.c:_cairo_calloc_ab Unexecuted instantiation: cairo-clip-polygon.c:_cairo_calloc_ab Unexecuted instantiation: cairo-clip-region.c:_cairo_calloc_ab Unexecuted instantiation: cairo-clip-surface.c:_cairo_calloc_ab Unexecuted instantiation: cairo-contour.c:_cairo_calloc_ab Unexecuted instantiation: cairo-font-face-twin-data.c:_cairo_calloc_ab Unexecuted instantiation: cairo-freelist.c:_cairo_calloc_ab Unexecuted instantiation: cairo-hull.c:_cairo_calloc_ab Unexecuted instantiation: cairo-output-stream.c:_cairo_calloc_ab Unexecuted instantiation: cairo-path-stroke-traps.c:_cairo_calloc_ab Unexecuted instantiation: cairo-polygon-intersect.c:_cairo_calloc_ab Unexecuted instantiation: cairo-polygon-reduce.c:_cairo_calloc_ab Unexecuted instantiation: cairo-rectangular-scan-converter.c:_cairo_calloc_ab Unexecuted instantiation: cairo-wideint.c:_cairo_calloc_ab Unexecuted instantiation: cairo-pdf-surface.c:_cairo_calloc_ab Unexecuted instantiation: cairo-pdf-interchange.c:_cairo_calloc_ab Unexecuted instantiation: cairo-image-info.c:_cairo_calloc_ab Unexecuted instantiation: cairo-paginated-surface.c:_cairo_calloc_ab Unexecuted instantiation: cairo-surface-clipper.c:_cairo_calloc_ab Unexecuted instantiation: cairo-version.c:_cairo_calloc_ab cairo-cff-subset.c:_cairo_calloc_ab Line | Count | Source | 125 | 168 | { | 126 | 168 | size_t c; | 127 | 168 | if (_cairo_mul_size_t_overflow (a, size, &c)) | 128 | 0 | return NULL; | 129 | | | 130 | 168 | return _cairo_calloc(c); | 131 | 168 | } |
Unexecuted instantiation: cairo-scaled-font-subsets.c:_cairo_calloc_ab cairo-truetype-subset.c:_cairo_calloc_ab Line | Count | Source | 125 | 2.81k | { | 126 | 2.81k | size_t c; | 127 | 2.81k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 128 | 0 | return NULL; | 129 | | | 130 | 2.81k | return _cairo_calloc(c); | 131 | 2.81k | } |
cairo-type1-fallback.c:_cairo_calloc_ab Line | Count | Source | 125 | 46 | { | 126 | 46 | size_t c; | 127 | 46 | if (_cairo_mul_size_t_overflow (a, size, &c)) | 128 | 0 | return NULL; | 129 | | | 130 | 46 | return _cairo_calloc(c); | 131 | 46 | } |
Unexecuted instantiation: cairo-type1-glyph-names.c:_cairo_calloc_ab cairo-type1-subset.c:_cairo_calloc_ab Line | Count | Source | 125 | 1.64k | { | 126 | 1.64k | size_t c; | 127 | 1.64k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 128 | 0 | return NULL; | 129 | | | 130 | 1.64k | return _cairo_calloc(c); | 131 | 1.64k | } |
Unexecuted instantiation: cairo-type3-glyph-surface.c:_cairo_calloc_ab Unexecuted instantiation: cairo-pdf-operators.c:_cairo_calloc_ab Unexecuted instantiation: cairo-pdf-shading.c:_cairo_calloc_ab Unexecuted instantiation: cairo-tag-attributes.c:_cairo_calloc_ab Unexecuted instantiation: cairo-tag-stack.c:_cairo_calloc_ab Unexecuted instantiation: cairo-deflate-stream.c:_cairo_calloc_ab |
132 | | |
133 | | /** |
134 | | * _cairo_realloc_ab: |
135 | | * @ptr: original pointer to block of memory to be resized |
136 | | * @a: number of elements to allocate |
137 | | * @size: size of each element |
138 | | * |
139 | | * Reallocates @ptr a block of @a*@size memory using realloc(), taking |
140 | | * care to not overflow when doing the multiplication. The memory |
141 | | * should be freed using free(). |
142 | | * |
143 | | * @size should be a constant so that the compiler can optimize |
144 | | * out a constant division. |
145 | | * |
146 | | * Return value: A pointer to the newly allocated memory, or %NULL in |
147 | | * case of realloc() failure or overflow (whereupon the original block |
148 | | * of memory * is left untouched). |
149 | | **/ |
150 | | |
151 | | static cairo_always_inline void * |
152 | | _cairo_realloc_ab(void *ptr, size_t a, size_t size) |
153 | 81.9k | { |
154 | 81.9k | size_t c; |
155 | 81.9k | if (_cairo_mul_size_t_overflow (a, size, &c)) |
156 | 0 | return NULL; |
157 | | |
158 | 81.9k | return realloc(ptr, c); |
159 | 81.9k | } Unexecuted instantiation: cairo-font-face.c:_cairo_realloc_ab Unexecuted instantiation: cairo-font-options.c:_cairo_realloc_ab Unexecuted instantiation: cairo-image-surface.c:_cairo_realloc_ab Unexecuted instantiation: cairo-matrix.c:_cairo_realloc_ab Unexecuted instantiation: cairo-misc.c:_cairo_realloc_ab Unexecuted instantiation: cairo-mutex.c:_cairo_realloc_ab Unexecuted instantiation: cairo-path.c:_cairo_realloc_ab cairo-pattern.c:_cairo_realloc_ab Line | Count | Source | 153 | 3.07k | { | 154 | 3.07k | size_t c; | 155 | 3.07k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 156 | 0 | return NULL; | 157 | | | 158 | 3.07k | return realloc(ptr, c); | 159 | 3.07k | } |
Unexecuted instantiation: cairo-raster-source-pattern.c:_cairo_realloc_ab Unexecuted instantiation: cairo-recording-surface.c:_cairo_realloc_ab Unexecuted instantiation: cairo-rectangle.c:_cairo_realloc_ab Unexecuted instantiation: cairo-region.c:_cairo_realloc_ab Unexecuted instantiation: cairo-scaled-font.c:_cairo_realloc_ab Unexecuted instantiation: cairo-spline.c:_cairo_realloc_ab Unexecuted instantiation: cairo-stroke-style.c:_cairo_realloc_ab Unexecuted instantiation: cairo-surface-snapshot.c:_cairo_realloc_ab Unexecuted instantiation: cairo-surface-wrapper.c:_cairo_realloc_ab Unexecuted instantiation: cairo-surface.c:_cairo_realloc_ab Unexecuted instantiation: cairo-traps.c:_cairo_realloc_ab Unexecuted instantiation: cairo-unicode.c:_cairo_realloc_ab Unexecuted instantiation: cairo-user-font.c:_cairo_realloc_ab Unexecuted instantiation: cairo.c:_cairo_realloc_ab Unexecuted instantiation: cairo-ft-font.c:_cairo_realloc_ab Unexecuted instantiation: cairo-colr-glyph-render.c:_cairo_realloc_ab Unexecuted instantiation: cairo-svg-glyph-render.c:_cairo_realloc_ab Unexecuted instantiation: cairo-analysis-surface.c:_cairo_realloc_ab cairo-array.c:_cairo_realloc_ab Line | Count | Source | 153 | 77.3k | { | 154 | 77.3k | size_t c; | 155 | 77.3k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 156 | 0 | return NULL; | 157 | | | 158 | 77.3k | return realloc(ptr, c); | 159 | 77.3k | } |
Unexecuted instantiation: cairo-boxes.c:_cairo_realloc_ab Unexecuted instantiation: cairo-cache.c:_cairo_realloc_ab Unexecuted instantiation: cairo-clip-boxes.c:_cairo_realloc_ab Unexecuted instantiation: cairo-clip.c:_cairo_realloc_ab Unexecuted instantiation: cairo-color.c:_cairo_realloc_ab Unexecuted instantiation: cairo-composite-rectangles.c:_cairo_realloc_ab Unexecuted instantiation: cairo-compositor.c:_cairo_realloc_ab Unexecuted instantiation: cairo-damage.c:_cairo_realloc_ab Unexecuted instantiation: cairo-debug.c:_cairo_realloc_ab Unexecuted instantiation: cairo-default-context.c:_cairo_realloc_ab Unexecuted instantiation: cairo-device.c:_cairo_realloc_ab Unexecuted instantiation: cairo-error.c:_cairo_realloc_ab Unexecuted instantiation: cairo-font-face-twin.c:_cairo_realloc_ab Unexecuted instantiation: cairo-freed-pool.c:_cairo_realloc_ab Unexecuted instantiation: cairo-gstate.c:_cairo_realloc_ab Unexecuted instantiation: cairo-hash.c:_cairo_realloc_ab Unexecuted instantiation: cairo-image-compositor.c:_cairo_realloc_ab Unexecuted instantiation: cairo-image-source.c:_cairo_realloc_ab Unexecuted instantiation: cairo-line.c:_cairo_realloc_ab Unexecuted instantiation: cairo-mask-compositor.c:_cairo_realloc_ab Unexecuted instantiation: cairo-mesh-pattern-rasterizer.c:_cairo_realloc_ab Unexecuted instantiation: cairo-mono-scan-converter.c:_cairo_realloc_ab Unexecuted instantiation: cairo-no-compositor.c:_cairo_realloc_ab Unexecuted instantiation: cairo-observer.c:_cairo_realloc_ab Unexecuted instantiation: cairo-path-bounds.c:_cairo_realloc_ab Unexecuted instantiation: cairo-path-fill.c:_cairo_realloc_ab Unexecuted instantiation: cairo-path-fixed.c:_cairo_realloc_ab Unexecuted instantiation: cairo-path-in-fill.c:_cairo_realloc_ab Unexecuted instantiation: cairo-path-stroke-boxes.c:_cairo_realloc_ab Unexecuted instantiation: cairo-path-stroke-polygon.c:_cairo_realloc_ab Unexecuted instantiation: cairo-path-stroke.c:_cairo_realloc_ab Unexecuted instantiation: cairo-pen.c:_cairo_realloc_ab cairo-polygon.c:_cairo_realloc_ab Line | Count | Source | 153 | 1.51k | { | 154 | 1.51k | size_t c; | 155 | 1.51k | if (_cairo_mul_size_t_overflow (a, size, &c)) | 156 | 0 | return NULL; | 157 | | | 158 | 1.51k | return realloc(ptr, c); | 159 | 1.51k | } |
Unexecuted instantiation: cairo-shape-mask-compositor.c:_cairo_realloc_ab Unexecuted instantiation: cairo-slope.c:_cairo_realloc_ab Unexecuted instantiation: cairo-spans-compositor.c:_cairo_realloc_ab Unexecuted instantiation: cairo-spans.c:_cairo_realloc_ab Unexecuted instantiation: cairo-stroke-dash.c:_cairo_realloc_ab Unexecuted instantiation: cairo-surface-offset.c:_cairo_realloc_ab Unexecuted instantiation: cairo-tor-scan-converter.c:_cairo_realloc_ab Unexecuted instantiation: cairo-tor22-scan-converter.c:_cairo_realloc_ab Unexecuted instantiation: cairo-toy-font-face.c:_cairo_realloc_ab Unexecuted instantiation: cairo-traps-compositor.c:_cairo_realloc_ab Unexecuted instantiation: cairo-png.c:_cairo_realloc_ab Unexecuted instantiation: cairo-arc.c:_cairo_realloc_ab Unexecuted instantiation: cairo-bentley-ottmann-rectangular.c:_cairo_realloc_ab Unexecuted instantiation: cairo-bentley-ottmann-rectilinear.c:_cairo_realloc_ab Unexecuted instantiation: cairo-bentley-ottmann.c:_cairo_realloc_ab Unexecuted instantiation: cairo-boxes-intersect.c:_cairo_realloc_ab Unexecuted instantiation: cairo-clip-polygon.c:_cairo_realloc_ab Unexecuted instantiation: cairo-clip-region.c:_cairo_realloc_ab Unexecuted instantiation: cairo-clip-surface.c:_cairo_realloc_ab Unexecuted instantiation: cairo-contour.c:_cairo_realloc_ab Unexecuted instantiation: cairo-font-face-twin-data.c:_cairo_realloc_ab Unexecuted instantiation: cairo-freelist.c:_cairo_realloc_ab Unexecuted instantiation: cairo-hull.c:_cairo_realloc_ab Unexecuted instantiation: cairo-output-stream.c:_cairo_realloc_ab Unexecuted instantiation: cairo-path-stroke-traps.c:_cairo_realloc_ab Unexecuted instantiation: cairo-polygon-intersect.c:_cairo_realloc_ab Unexecuted instantiation: cairo-polygon-reduce.c:_cairo_realloc_ab Unexecuted instantiation: cairo-rectangular-scan-converter.c:_cairo_realloc_ab Unexecuted instantiation: cairo-wideint.c:_cairo_realloc_ab Unexecuted instantiation: cairo-pdf-surface.c:_cairo_realloc_ab Unexecuted instantiation: cairo-pdf-interchange.c:_cairo_realloc_ab Unexecuted instantiation: cairo-image-info.c:_cairo_realloc_ab Unexecuted instantiation: cairo-paginated-surface.c:_cairo_realloc_ab Unexecuted instantiation: cairo-surface-clipper.c:_cairo_realloc_ab Unexecuted instantiation: cairo-version.c:_cairo_realloc_ab Unexecuted instantiation: cairo-cff-subset.c:_cairo_realloc_ab Unexecuted instantiation: cairo-scaled-font-subsets.c:_cairo_realloc_ab Unexecuted instantiation: cairo-truetype-subset.c:_cairo_realloc_ab Unexecuted instantiation: cairo-type1-fallback.c:_cairo_realloc_ab Unexecuted instantiation: cairo-type1-glyph-names.c:_cairo_realloc_ab Unexecuted instantiation: cairo-type1-subset.c:_cairo_realloc_ab Unexecuted instantiation: cairo-type3-glyph-surface.c:_cairo_realloc_ab Unexecuted instantiation: cairo-pdf-operators.c:_cairo_realloc_ab Unexecuted instantiation: cairo-pdf-shading.c:_cairo_realloc_ab Unexecuted instantiation: cairo-tag-attributes.c:_cairo_realloc_ab Unexecuted instantiation: cairo-tag-stack.c:_cairo_realloc_ab Unexecuted instantiation: cairo-deflate-stream.c:_cairo_realloc_ab |
160 | | |
161 | | /** |
162 | | * _cairo_malloc_abc: |
163 | | * @a: first factor of number of elements to allocate |
164 | | * @b: second factor of number of elements to allocate |
165 | | * @size: size of each element |
166 | | * |
167 | | * Allocates @a*@b*@size memory using _cairo_malloc(), taking care to not |
168 | | * overflow when doing the multiplication. Behaves like |
169 | | * _cairo_malloc_ab(). The memory should be freed using free(). |
170 | | * |
171 | | * @size should be a constant so that the compiler can optimize |
172 | | * out a constant division. |
173 | | * |
174 | | * Return value: A pointer to the newly allocated memory, or %NULL in |
175 | | * case of malloc() failure or overflow. |
176 | | **/ |
177 | | |
178 | | static cairo_always_inline void * |
179 | | _cairo_malloc_abc(size_t a, size_t b, size_t size) |
180 | 319 | { |
181 | 319 | size_t c, d; |
182 | 319 | if (_cairo_mul_size_t_overflow (a, b, &c)) |
183 | 0 | return NULL; |
184 | | |
185 | 319 | if (_cairo_mul_size_t_overflow (c, size, &d)) |
186 | 0 | return NULL; |
187 | | |
188 | 319 | return _cairo_malloc(d); |
189 | 319 | } Unexecuted instantiation: cairo-font-face.c:_cairo_malloc_abc Unexecuted instantiation: cairo-font-options.c:_cairo_malloc_abc Unexecuted instantiation: cairo-image-surface.c:_cairo_malloc_abc Unexecuted instantiation: cairo-matrix.c:_cairo_malloc_abc Unexecuted instantiation: cairo-misc.c:_cairo_malloc_abc Unexecuted instantiation: cairo-mutex.c:_cairo_malloc_abc Unexecuted instantiation: cairo-path.c:_cairo_malloc_abc Unexecuted instantiation: cairo-pattern.c:_cairo_malloc_abc Unexecuted instantiation: cairo-raster-source-pattern.c:_cairo_malloc_abc Unexecuted instantiation: cairo-recording-surface.c:_cairo_malloc_abc Unexecuted instantiation: cairo-rectangle.c:_cairo_malloc_abc Unexecuted instantiation: cairo-region.c:_cairo_malloc_abc Unexecuted instantiation: cairo-scaled-font.c:_cairo_malloc_abc Unexecuted instantiation: cairo-spline.c:_cairo_malloc_abc Unexecuted instantiation: cairo-stroke-style.c:_cairo_malloc_abc Unexecuted instantiation: cairo-surface-snapshot.c:_cairo_malloc_abc Unexecuted instantiation: cairo-surface-wrapper.c:_cairo_malloc_abc Unexecuted instantiation: cairo-surface.c:_cairo_malloc_abc Unexecuted instantiation: cairo-traps.c:_cairo_malloc_abc Unexecuted instantiation: cairo-unicode.c:_cairo_malloc_abc Unexecuted instantiation: cairo-user-font.c:_cairo_malloc_abc Unexecuted instantiation: cairo.c:_cairo_malloc_abc Unexecuted instantiation: cairo-ft-font.c:_cairo_malloc_abc Unexecuted instantiation: cairo-colr-glyph-render.c:_cairo_malloc_abc Unexecuted instantiation: cairo-svg-glyph-render.c:_cairo_malloc_abc Unexecuted instantiation: cairo-analysis-surface.c:_cairo_malloc_abc Unexecuted instantiation: cairo-array.c:_cairo_malloc_abc Unexecuted instantiation: cairo-boxes.c:_cairo_malloc_abc Unexecuted instantiation: cairo-cache.c:_cairo_malloc_abc Unexecuted instantiation: cairo-clip-boxes.c:_cairo_malloc_abc Unexecuted instantiation: cairo-clip.c:_cairo_malloc_abc Unexecuted instantiation: cairo-color.c:_cairo_malloc_abc Unexecuted instantiation: cairo-composite-rectangles.c:_cairo_malloc_abc Unexecuted instantiation: cairo-compositor.c:_cairo_malloc_abc Unexecuted instantiation: cairo-damage.c:_cairo_malloc_abc Unexecuted instantiation: cairo-debug.c:_cairo_malloc_abc Unexecuted instantiation: cairo-default-context.c:_cairo_malloc_abc Unexecuted instantiation: cairo-device.c:_cairo_malloc_abc Unexecuted instantiation: cairo-error.c:_cairo_malloc_abc Unexecuted instantiation: cairo-font-face-twin.c:_cairo_malloc_abc Unexecuted instantiation: cairo-freed-pool.c:_cairo_malloc_abc Unexecuted instantiation: cairo-gstate.c:_cairo_malloc_abc Unexecuted instantiation: cairo-hash.c:_cairo_malloc_abc Unexecuted instantiation: cairo-image-compositor.c:_cairo_malloc_abc Unexecuted instantiation: cairo-image-source.c:_cairo_malloc_abc Unexecuted instantiation: cairo-line.c:_cairo_malloc_abc Unexecuted instantiation: cairo-mask-compositor.c:_cairo_malloc_abc Unexecuted instantiation: cairo-mesh-pattern-rasterizer.c:_cairo_malloc_abc Unexecuted instantiation: cairo-mono-scan-converter.c:_cairo_malloc_abc Unexecuted instantiation: cairo-no-compositor.c:_cairo_malloc_abc Unexecuted instantiation: cairo-observer.c:_cairo_malloc_abc Unexecuted instantiation: cairo-path-bounds.c:_cairo_malloc_abc Unexecuted instantiation: cairo-path-fill.c:_cairo_malloc_abc Unexecuted instantiation: cairo-path-fixed.c:_cairo_malloc_abc Unexecuted instantiation: cairo-path-in-fill.c:_cairo_malloc_abc Unexecuted instantiation: cairo-path-stroke-boxes.c:_cairo_malloc_abc Unexecuted instantiation: cairo-path-stroke-polygon.c:_cairo_malloc_abc Unexecuted instantiation: cairo-path-stroke.c:_cairo_malloc_abc Unexecuted instantiation: cairo-pen.c:_cairo_malloc_abc Unexecuted instantiation: cairo-polygon.c:_cairo_malloc_abc Unexecuted instantiation: cairo-shape-mask-compositor.c:_cairo_malloc_abc Unexecuted instantiation: cairo-slope.c:_cairo_malloc_abc Unexecuted instantiation: cairo-spans-compositor.c:_cairo_malloc_abc Unexecuted instantiation: cairo-spans.c:_cairo_malloc_abc Unexecuted instantiation: cairo-stroke-dash.c:_cairo_malloc_abc Unexecuted instantiation: cairo-surface-offset.c:_cairo_malloc_abc Unexecuted instantiation: cairo-tor-scan-converter.c:_cairo_malloc_abc Unexecuted instantiation: cairo-tor22-scan-converter.c:_cairo_malloc_abc Unexecuted instantiation: cairo-toy-font-face.c:_cairo_malloc_abc Unexecuted instantiation: cairo-traps-compositor.c:_cairo_malloc_abc Unexecuted instantiation: cairo-png.c:_cairo_malloc_abc Unexecuted instantiation: cairo-arc.c:_cairo_malloc_abc Unexecuted instantiation: cairo-bentley-ottmann-rectangular.c:_cairo_malloc_abc Unexecuted instantiation: cairo-bentley-ottmann-rectilinear.c:_cairo_malloc_abc Unexecuted instantiation: cairo-bentley-ottmann.c:_cairo_malloc_abc Unexecuted instantiation: cairo-boxes-intersect.c:_cairo_malloc_abc Unexecuted instantiation: cairo-clip-polygon.c:_cairo_malloc_abc Unexecuted instantiation: cairo-clip-region.c:_cairo_malloc_abc Unexecuted instantiation: cairo-clip-surface.c:_cairo_malloc_abc Unexecuted instantiation: cairo-contour.c:_cairo_malloc_abc Unexecuted instantiation: cairo-font-face-twin-data.c:_cairo_malloc_abc Unexecuted instantiation: cairo-freelist.c:_cairo_malloc_abc Unexecuted instantiation: cairo-hull.c:_cairo_malloc_abc Unexecuted instantiation: cairo-output-stream.c:_cairo_malloc_abc Unexecuted instantiation: cairo-path-stroke-traps.c:_cairo_malloc_abc Unexecuted instantiation: cairo-polygon-intersect.c:_cairo_malloc_abc Unexecuted instantiation: cairo-polygon-reduce.c:_cairo_malloc_abc Unexecuted instantiation: cairo-rectangular-scan-converter.c:_cairo_malloc_abc Unexecuted instantiation: cairo-wideint.c:_cairo_malloc_abc cairo-pdf-surface.c:_cairo_malloc_abc Line | Count | Source | 180 | 319 | { | 181 | 319 | size_t c, d; | 182 | 319 | if (_cairo_mul_size_t_overflow (a, b, &c)) | 183 | 0 | return NULL; | 184 | | | 185 | 319 | if (_cairo_mul_size_t_overflow (c, size, &d)) | 186 | 0 | return NULL; | 187 | | | 188 | 319 | return _cairo_malloc(d); | 189 | 319 | } |
Unexecuted instantiation: cairo-pdf-interchange.c:_cairo_malloc_abc Unexecuted instantiation: cairo-image-info.c:_cairo_malloc_abc Unexecuted instantiation: cairo-paginated-surface.c:_cairo_malloc_abc Unexecuted instantiation: cairo-surface-clipper.c:_cairo_malloc_abc Unexecuted instantiation: cairo-version.c:_cairo_malloc_abc Unexecuted instantiation: cairo-cff-subset.c:_cairo_malloc_abc Unexecuted instantiation: cairo-scaled-font-subsets.c:_cairo_malloc_abc Unexecuted instantiation: cairo-truetype-subset.c:_cairo_malloc_abc Unexecuted instantiation: cairo-type1-fallback.c:_cairo_malloc_abc Unexecuted instantiation: cairo-type1-glyph-names.c:_cairo_malloc_abc Unexecuted instantiation: cairo-type1-subset.c:_cairo_malloc_abc Unexecuted instantiation: cairo-type3-glyph-surface.c:_cairo_malloc_abc Unexecuted instantiation: cairo-pdf-operators.c:_cairo_malloc_abc Unexecuted instantiation: cairo-pdf-shading.c:_cairo_malloc_abc Unexecuted instantiation: cairo-tag-attributes.c:_cairo_malloc_abc Unexecuted instantiation: cairo-tag-stack.c:_cairo_malloc_abc Unexecuted instantiation: cairo-deflate-stream.c:_cairo_malloc_abc |
190 | | |
191 | | /** |
192 | | * _cairo_malloc_ab_plus_c: |
193 | | * @a: number of elements to allocate |
194 | | * @size: size of each element |
195 | | * @c: additional size to allocate |
196 | | * |
197 | | * Allocates @a*@size+@c memory using _cairo_malloc(), taking care to not |
198 | | * overflow when doing the arithmetic. Behaves similar to |
199 | | * _cairo_malloc_ab(). The memory should be freed using free(). |
200 | | * |
201 | | * Return value: A pointer to the newly allocated memory, or %NULL in |
202 | | * case of malloc() failure or overflow. |
203 | | **/ |
204 | | |
205 | | static cairo_always_inline void * |
206 | | _cairo_malloc_ab_plus_c(size_t a, size_t size, size_t c) |
207 | 32.4k | { |
208 | 32.4k | size_t d, e; |
209 | 32.4k | if (_cairo_mul_size_t_overflow (a, size, &d)) |
210 | 0 | return NULL; |
211 | | |
212 | 32.4k | if (_cairo_add_size_t_overflow (d, c, &e)) |
213 | 0 | return NULL; |
214 | | |
215 | 32.4k | return _cairo_malloc(e); |
216 | 32.4k | } Unexecuted instantiation: cairo-font-face.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-font-options.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-image-surface.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-matrix.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-misc.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-mutex.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-path.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-pattern.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-raster-source-pattern.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-recording-surface.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-rectangle.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-region.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-scaled-font.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-spline.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-stroke-style.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-surface-snapshot.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-surface-wrapper.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-surface.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-traps.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-unicode.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-user-font.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-ft-font.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-colr-glyph-render.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-svg-glyph-render.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-analysis-surface.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-array.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-boxes.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-cache.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-clip-boxes.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-clip.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-color.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-composite-rectangles.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-compositor.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-damage.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-debug.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-default-context.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-device.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-error.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-font-face-twin.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-freed-pool.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-gstate.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-hash.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-image-compositor.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-image-source.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-line.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-mask-compositor.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-mesh-pattern-rasterizer.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-mono-scan-converter.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-no-compositor.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-observer.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-path-bounds.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-path-fill.c:_cairo_malloc_ab_plus_c cairo-path-fixed.c:_cairo_malloc_ab_plus_c Line | Count | Source | 207 | 14.3k | { | 208 | 14.3k | size_t d, e; | 209 | 14.3k | if (_cairo_mul_size_t_overflow (a, size, &d)) | 210 | 0 | return NULL; | 211 | | | 212 | 14.3k | if (_cairo_add_size_t_overflow (d, c, &e)) | 213 | 0 | return NULL; | 214 | | | 215 | 14.3k | return _cairo_malloc(e); | 216 | 14.3k | } |
Unexecuted instantiation: cairo-path-in-fill.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-path-stroke-boxes.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-path-stroke-polygon.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-path-stroke.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-pen.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-polygon.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-shape-mask-compositor.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-slope.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-spans-compositor.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-spans.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-stroke-dash.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-surface-offset.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-tor-scan-converter.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-tor22-scan-converter.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-toy-font-face.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-traps-compositor.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-png.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-arc.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-bentley-ottmann-rectangular.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-bentley-ottmann-rectilinear.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-bentley-ottmann.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-boxes-intersect.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-clip-polygon.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-clip-region.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-clip-surface.c:_cairo_malloc_ab_plus_c cairo-contour.c:_cairo_malloc_ab_plus_c Line | Count | Source | 207 | 131 | { | 208 | 131 | size_t d, e; | 209 | 131 | if (_cairo_mul_size_t_overflow (a, size, &d)) | 210 | 0 | return NULL; | 211 | | | 212 | 131 | if (_cairo_add_size_t_overflow (d, c, &e)) | 213 | 0 | return NULL; | 214 | | | 215 | 131 | return _cairo_malloc(e); | 216 | 131 | } |
Unexecuted instantiation: cairo-font-face-twin-data.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-freelist.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-hull.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-output-stream.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-path-stroke-traps.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-polygon-intersect.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-polygon-reduce.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-rectangular-scan-converter.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-wideint.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-pdf-surface.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-pdf-interchange.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-image-info.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-paginated-surface.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-surface-clipper.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-version.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-cff-subset.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-scaled-font-subsets.c:_cairo_malloc_ab_plus_c cairo-truetype-subset.c:_cairo_malloc_ab_plus_c Line | Count | Source | 207 | 18.0k | { | 208 | 18.0k | size_t d, e; | 209 | 18.0k | if (_cairo_mul_size_t_overflow (a, size, &d)) | 210 | 0 | return NULL; | 211 | | | 212 | 18.0k | if (_cairo_add_size_t_overflow (d, c, &e)) | 213 | 0 | return NULL; | 214 | | | 215 | 18.0k | return _cairo_malloc(e); | 216 | 18.0k | } |
Unexecuted instantiation: cairo-type1-fallback.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-type1-glyph-names.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-type1-subset.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-type3-glyph-surface.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-pdf-operators.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-pdf-shading.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-tag-attributes.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-tag-stack.c:_cairo_malloc_ab_plus_c Unexecuted instantiation: cairo-deflate-stream.c:_cairo_malloc_ab_plus_c |
217 | | |
218 | | #endif /* CAIRO_MALLOC_PRIVATE_H */ |