Changeset d9d6f29 in mainline


Ignore:
Timestamp:
2022-12-21T15:37:11Z (16 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
570a3f3
Parents:
4e7b0ad
git-author:
Jiri Svoboda <jiri@…> (2022-12-20 18:36:06)
git-committer:
Jiri Svoboda <jiri@…> (2022-12-21 15:37:11)
Message:

Roll back properly in error path of ds_display_add_ddev()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/display/display.c

    r4e7b0ad rd9d6f29  
    644644{
    645645        errno_t rc;
     646        gfx_rect_t old_disp_rect;
    646647
    647648        assert(ddev->display == NULL);
    648649        assert(!link_used(&ddev->lddevs));
     650
     651        old_disp_rect = disp->rect;
    649652
    650653        ddev->display = disp;
     
    658661                /* Create cloning GC */
    659662                rc = ds_clonegc_create(ddev->gc, &disp->fbgc);
    660                 if (rc != EOK) {
    661                         // XXX Remove output
    662                         return ENOMEM;
    663                 }
     663                if (rc != EOK)
     664                        goto error;
    664665
    665666                /* Allocate backbuffer */
    666667                rc = ds_display_alloc_backbuf(disp);
    667668                if (rc != EOK) {
    668                         // XXX Remove output
    669                         // XXX Delete clone GC
     669                        ds_clonegc_delete(disp->fbgc);
     670                        disp->fbgc = NULL;
    670671                        goto error;
    671672                }
     
    681682        return EOK;
    682683error:
    683         disp->rect.p0.x = 0;
    684         disp->rect.p0.y = 0;
    685         disp->rect.p1.x = 0;
    686         disp->rect.p1.y = 0;
     684        disp->rect = old_disp_rect;
    687685        list_remove(&ddev->lddevs);
    688686        return rc;
Note: See TracChangeset for help on using the changeset viewer.