Changes in uspace/srv/clip/clip.c [531695f:1e4cada] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/clip/clip.c

    r531695f r1e4cada  
    4646static void clip_put_data(ipc_callid_t rid, ipc_call_t *request)
    4747{
    48         char *data;
    49         int rc;
     48        ipc_callid_t callid;
    5049        size_t size;
    5150       
     
    6564                break;
    6665        case CLIPBOARD_TAG_BLOB:
    67                 rc = async_data_blob_receive(&data, 0, &size);
    68                 if (rc != EOK) {
    69                         ipc_answer_0(rid, rc);
     66                if (!async_data_write_receive(&callid, &size)) {
     67                        ipc_answer_0(callid, EINVAL);
     68                        ipc_answer_0(rid, EINVAL);
     69                        break;
     70                }
     71               
     72                char *data = malloc(size);
     73                if (!data) {
     74                        ipc_answer_0(callid, ENOMEM);
     75                        ipc_answer_0(rid, ENOMEM);
     76                        break;
     77                }
     78               
     79                ipcarg_t retval = async_data_write_finalize(callid, data, size);
     80                if (retval != EOK) {
     81                        ipc_answer_0(rid, retval);
     82                        free(data);
    7083                        break;
    7184                }
Note: See TracChangeset for help on using the changeset viewer.