mirror of
https://github.com/davatorium/rofi.git
synced 2024-11-18 13:54:36 -05:00
Fix memory leak in box and listview widget, add coverage make target. (ggcov and lcov)
This commit is contained in:
parent
2c0c3c675a
commit
7b3b68462e
12 changed files with 46 additions and 25 deletions
|
@ -348,5 +348,14 @@ $(top_builddir)/gitconfig.h: .FORCE
|
|||
|
||||
$(rofi_SOURCES): $(top_builddir)/gitconfig.h
|
||||
|
||||
.PHONY: coverage
|
||||
coverage: coverage/index.html
|
||||
|
||||
coverage.info: $(top_builddir)/test/*.gcda $(top_builddir)/source/*.gcda $(top_builddir)/source/**/*.gcda
|
||||
lcov --capture --directory ./ --output-file coverage.info
|
||||
|
||||
coverage/index.html: coverage.info
|
||||
genhtml $^ --output-directory coverage/
|
||||
|
||||
.PHONY: .FORCE
|
||||
.FORCE:
|
||||
|
|
|
@ -28,7 +28,7 @@ typedef struct _widget widget;
|
|||
typedef gboolean ( *widget_clicked_cb )( widget *, xcb_button_press_event_t *, void * );
|
||||
|
||||
/** Macro to get widget from an implementation (e.g. textbox/scrollbar) */
|
||||
#define WIDGET( a ) ( ( a ) != NULL ? (widget *) ( a ) : NULL )
|
||||
#define WIDGET( a ) ( (widget *) ( a ) )
|
||||
|
||||
/**
|
||||
* @param widget The widget to check
|
||||
|
|
|
@ -202,13 +202,15 @@ static void box_free ( widget *wid )
|
|||
widget * child = (widget *) iter->data;
|
||||
widget_free ( child );
|
||||
}
|
||||
|
||||
g_list_free ( b->children );
|
||||
g_free ( b );
|
||||
}
|
||||
|
||||
void box_add ( box *box, widget *child, gboolean expand, gboolean end )
|
||||
{
|
||||
if ( box == NULL ) return;
|
||||
if ( box == NULL ) {
|
||||
return;
|
||||
}
|
||||
child->expand = expand;
|
||||
child->end = end;
|
||||
child->parent = WIDGET ( box );
|
||||
|
|
|
@ -71,9 +71,15 @@ struct _listview
|
|||
void *mouse_activated_data;
|
||||
};
|
||||
|
||||
static void listview_free ( widget *widget )
|
||||
static void listview_free ( widget *wid )
|
||||
{
|
||||
listview *lv = (listview *) widget;
|
||||
listview *lv = (listview *) wid;
|
||||
for ( unsigned int i = 0; i < lv->cur_elements; i++ ) {
|
||||
widget_free ( WIDGET ( lv->boxes [i] ) );
|
||||
}
|
||||
g_free ( lv->boxes );
|
||||
|
||||
widget_free ( WIDGET ( lv->scrollbar ) );
|
||||
g_free ( lv );
|
||||
}
|
||||
static unsigned int scroll_per_page ( listview * lv )
|
||||
|
|
|
@ -66,10 +66,10 @@ void widget_draw ( widget *widget, cairo_t *d )
|
|||
widget->need_redraw = FALSE;
|
||||
}
|
||||
}
|
||||
void widget_free ( widget *widget )
|
||||
void widget_free ( widget *wid )
|
||||
{
|
||||
if ( widget && widget->free ) {
|
||||
widget->free ( widget );
|
||||
if ( wid && wid->free ) {
|
||||
wid->free ( wid );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,10 @@ int main ( G_GNUC_UNUSED int argc, G_GNUC_UNUSED char **argv )
|
|||
widget *wid= (widget*)g_malloc0(sizeof(widget));
|
||||
widget_resize ( wid, 20, 40);
|
||||
widget_move ( wid, 10, 10);
|
||||
// Getter, setter x pos
|
||||
//
|
||||
TASSERT( widget_get_x_pos ( wid ) == 10 );
|
||||
TASSERT( widget_get_y_pos ( wid ) == 10 );
|
||||
|
||||
// Left of box
|
||||
TASSERT ( widget_intersect ( wid, 0, 0) == 0 );
|
||||
|
|
Loading…
Reference in a new issue