Rev 2927 | Rev 3107 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2927 | Rev 2948 | ||
|---|---|---|---|
| Line 241... | Line 241... | ||
| 241 | /* The recipient agreed to send data. */ |
241 | /* The recipient agreed to send data. */ |
| 242 | uintptr_t src = IPC_GET_ARG1(answer->data); |
242 | uintptr_t src = IPC_GET_ARG1(answer->data); |
| 243 | uintptr_t dst = IPC_GET_ARG1(*olddata); |
243 | uintptr_t dst = IPC_GET_ARG1(*olddata); |
| 244 | size_t max_size = IPC_GET_ARG2(*olddata); |
244 | size_t max_size = IPC_GET_ARG2(*olddata); |
| 245 | size_t size = IPC_GET_ARG2(answer->data); |
245 | size_t size = IPC_GET_ARG2(answer->data); |
| 246 | if (size <= max_size) { |
246 | if (size && size <= max_size) { |
| 247 | /* |
247 | /* |
| 248 | * Copy the destination VA so that this piece of |
248 | * Copy the destination VA so that this piece of |
| 249 | * information is not lost. |
249 | * information is not lost. |
| 250 | */ |
250 | */ |
| 251 | IPC_SET_ARG1(answer->data, dst); |
251 | IPC_SET_ARG1(answer->data, dst); |
| Line 256... | Line 256... | ||
| 256 | if (rc) { |
256 | if (rc) { |
| 257 | IPC_SET_RETVAL(answer->data, rc); |
257 | IPC_SET_RETVAL(answer->data, rc); |
| 258 | free(answer->buffer); |
258 | free(answer->buffer); |
| 259 | answer->buffer = NULL; |
259 | answer->buffer = NULL; |
| 260 | } |
260 | } |
| - | 261 | } else if (!size) { |
|
| - | 262 | IPC_SET_RETVAL(answer->data, EOK); |
|
| 261 | } else { |
263 | } else { |
| 262 | IPC_SET_RETVAL(answer->data, ELIMIT); |
264 | IPC_SET_RETVAL(answer->data, ELIMIT); |
| 263 | } |
265 | } |
| 264 | } |
266 | } |
| 265 | } else if (IPC_GET_METHOD(*olddata) == IPC_M_DATA_WRITE) { |
267 | } else if (IPC_GET_METHOD(*olddata) == IPC_M_DATA_WRITE) { |