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