Skip to content

Commit b0620ce

Browse files
committed
Fix uninitialized use of PangoContext in tests
1 parent f38a60a commit b0620ce

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
lines changed

Makefile

+1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ test: test/test clean-coverage-run
8989
test-valgrind: test/test
9090
${VALGRIND} \
9191
--suppressions=.valgrind.suppressions \
92+
--track-origins=yes \
9293
--leak-check=full \
9394
--show-leak-kinds=definite \
9495
--errors-for-leak-kinds=definite \

src/icon.c

+1-4
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,7 @@ static GdkPixbuf *icon_pixbuf_scale_to_size(GdkPixbuf *pixbuf, int min_size, int
168168
int h = gdk_pixbuf_get_height(pixbuf);
169169

170170
// TODO immediately rescale icon upon scale changes
171-
if(icon_size_clamp(&w, &h, min_size, max_size)) {
172-
//w = round(w * dpi_scale);
173-
//h = round(h * dpi_scale);
174-
}
171+
icon_size_clamp(&w, &h, min_size, max_size);
175172
GdkPixbuf *scaled = gdk_pixbuf_scale_simple(
176173
pixbuf,
177174
w,

test/draw.c

+25-6
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ cairo_t *c;
1414
double get_dummy_scale(void) { return 1; }
1515

1616
const struct screen_info* noop_screen(void) {
17-
static struct screen_info i;
17+
static struct screen_info i = {0};
1818
return &i;
1919
}
2020

@@ -267,15 +267,18 @@ TEST test_layout_render_no_gaps(void)
267267
dim = calculate_dimensions(layouts);
268268
image_surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1, 1);
269269

270-
enum corner_pos corners = C_TOP | _C_FIRST;
270+
enum corner_pos corners = (settings.corners & C_TOP) | _C_FIRST;
271271
for (GSList *iter = layouts; iter; iter = iter->next) {
272+
272273
struct colored_layout *cl_this = iter->data;
273274
struct colored_layout *cl_next = iter->next ? iter->next->data : NULL;
274275

275-
if (!cl_next)
276-
corners |= C_BOT | _C_LAST;
277-
dim = layout_render(image_surface, cl_this, cl_next, dim, corners);
276+
if (settings.gap_size)
277+
corners = settings.corners;
278+
else if (!cl_next)
279+
corners |= (settings.corners & C_BOT) | _C_LAST;
278280

281+
dim = layout_render(image_surface, cl_this, cl_next, dim, corners);
279282
corners &= ~(C_TOP | _C_FIRST);
280283
}
281284

@@ -311,11 +314,19 @@ TEST test_layout_render_gaps(void)
311314
dim = calculate_dimensions(layouts);
312315
image_surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1, 1);
313316

317+
enum corner_pos corners = (settings.corners & C_TOP) | _C_FIRST;
314318
for (GSList *iter = layouts; iter; iter = iter->next) {
319+
315320
struct colored_layout *cl_this = iter->data;
316321
struct colored_layout *cl_next = iter->next ? iter->next->data : NULL;
317322

318-
dim = layout_render(image_surface, cl_this, cl_next, dim, C_ALL);
323+
if (settings.gap_size)
324+
corners = settings.corners;
325+
else if (!cl_next)
326+
corners |= (settings.corners & C_BOT) | _C_LAST;
327+
328+
dim = layout_render(image_surface, cl_this, cl_next, dim, corners);
329+
corners &= ~(C_TOP | _C_FIRST);
319330
}
320331

321332
expected_y = get_expected_dimension_y_offset(layout_count);
@@ -336,6 +347,10 @@ SUITE(suite_draw)
336347
cairo_surface_t *s = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1, 1);
337348
c = cairo_create(s);
338349

350+
// XXX: This variable should not be accessed like this
351+
extern PangoContext *pango_ctx;
352+
pango_ctx = pango_cairo_create_context(c);
353+
339354
SHUFFLE_TESTS(time(NULL), {
340355
RUN_TEST(test_layout_from_notification);
341356
RUN_TEST(test_layout_from_notification_icon_off);
@@ -345,4 +360,8 @@ SUITE(suite_draw)
345360
RUN_TEST(test_layout_render_no_gaps);
346361
RUN_TEST(test_layout_render_gaps);
347362
});
363+
364+
g_object_unref(pango_ctx);
365+
cairo_destroy(c);
366+
cairo_surface_destroy(s);
348367
}

0 commit comments

Comments
 (0)