diff options
author | Jakob Bornecrantz <wallbraker@gmail.com> | 2010-04-10 13:41:22 +0200 |
---|---|---|
committer | Jakob Bornecrantz <wallbraker@gmail.com> | 2010-04-12 01:50:52 +0200 |
commit | cefe2a1dc258e4c1fe75a5cf7c3d6804a616366d (patch) | |
tree | 3e41da834b4957799ef71e619f83cc1bffba71cc /src/gallium/winsys/sw/drm/sw_drm_api.c | |
parent | c81f049794625c6907c884fdb03de8dd1555b11e (diff) |
winsys/sw: Fix error paths
Diffstat (limited to 'src/gallium/winsys/sw/drm/sw_drm_api.c')
-rw-r--r-- | src/gallium/winsys/sw/drm/sw_drm_api.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/gallium/winsys/sw/drm/sw_drm_api.c b/src/gallium/winsys/sw/drm/sw_drm_api.c index eb81d26a59..2ccde610e6 100644 --- a/src/gallium/winsys/sw/drm/sw_drm_api.c +++ b/src/gallium/winsys/sw/drm/sw_drm_api.c @@ -65,8 +65,12 @@ sw_drm_create_screen(struct drm_api *_api, int drmFD, struct pipe_screen *screen; screen = api->create_screen(api, drmFD, arg); + if (!screen) + return NULL; sww = wrapper_sw_winsys_warp_pipe_screen(screen); + if (!sww) + return NULL; return softpipe_create_screen(sww); } @@ -86,7 +90,10 @@ sw_drm_api_create(struct drm_api *api) { struct sw_drm_api *swapi = CALLOC_STRUCT(sw_drm_api); - swapi->base.name = "sw"; + if (!swapi) + return api; + + swapi->base.name = api->name; swapi->base.driver_name = api->driver_name; swapi->base.create_screen = sw_drm_create_screen; swapi->base.destroy = sw_drm_destroy; |