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. |