Subversion Repositories HelenOS

Rev

Rev 2660 | Rev 2662 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2660 Rev 2661
Line 234... Line 234...
234
                IPC_GET_ARG2(*olddata), as, IPC_GET_ARG1(*olddata),
234
                IPC_GET_ARG2(*olddata), as, IPC_GET_ARG1(*olddata),
235
                IPC_GET_ARG2(answer->data));
235
                IPC_GET_ARG2(answer->data));
236
            IPC_SET_RETVAL(answer->data, rc);
236
            IPC_SET_RETVAL(answer->data, rc);
237
        }
237
        }
238
    } else if (IPC_GET_METHOD(*olddata) == IPC_M_DATA_WRITE) {
238
    } else if (IPC_GET_METHOD(*olddata) == IPC_M_DATA_WRITE) {
-
 
239
        ASSERT(answer->buffer);
239
        if (!IPC_GET_RETVAL(answer->data)) {
240
        if (!IPC_GET_RETVAL(answer->data)) {
240
            int rc;
241
            int rc;
241
            uintptr_t dst;
242
            uintptr_t dst;
242
            uintptr_t size;
243
            uintptr_t size;
243
 
244
 
244
            ASSERT(answer->buffer);
-
 
245
 
-
 
246
            dst = IPC_GET_ARG1(answer->data);
245
            dst = IPC_GET_ARG1(answer->data);
247
            size = IPC_GET_ARG3(answer->data);
246
            size = IPC_GET_ARG3(answer->data);
248
 
247
 
249
            rc = copy_to_uspace((void *) dst, answer->buffer, size);
248
            rc = copy_to_uspace((void *) dst, answer->buffer, size);
250
            if (rc != 0)
249
            if (rc != 0)
251
                IPC_SET_RETVAL(answer->data, rc);
250
                IPC_SET_RETVAL(answer->data, rc);
252
            free(answer->buffer);
-
 
253
            answer->buffer = NULL;
-
 
254
        }
251
        }
-
 
252
        free(answer->buffer);
-
 
253
        answer->buffer = NULL;
255
    }
254
    }
256
    return 0;
255
    return 0;
257
}
256
}
258
 
257
 
259
/** Called before the request is sent.
258
/** Called before the request is sent.