summaryrefslogtreecommitdiff
path: root/libvxi11client
diff options
context:
space:
mode:
authordaniel <danieruru@gmail.com>2013-01-26 13:10:08 +0900
committerdaniel <danieruru@gmail.com>2013-01-26 13:10:08 +0900
commit35b28230e17a68db48f3b5fc91d2eec0c80e048c (patch)
tree3682265dbce6a376a9f65835d718515f448a4972 /libvxi11client
parent67801485ab5a9e4509d2bb2cdd9454ee4ed1ab11 (diff)
Add a "hack" to report back to the vxi11 service code when a link dies.
It's a hack because linux/glibc's RPC implementation doesn't seem to have the ability to set a recv error callback. The hack is to add an extra event to the events poll'd.. that event tells us if the socket died.
Diffstat (limited to 'libvxi11client')
-rw-r--r--libvxi11client/libvxi11client.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libvxi11client/libvxi11client.c b/libvxi11client/libvxi11client.c
index 743168f..0e01809 100644
--- a/libvxi11client/libvxi11client.c
+++ b/libvxi11client/libvxi11client.c
@@ -214,8 +214,10 @@ int vxi11_read(VXI11Context* context, char* buffer, unsigned int bufferlen, bool
#ifdef DEBUG
printf("Got \"%s\" from server\n", resp->data.data_val);
#endif
- if (buffer != NULL)
- strncpy(buffer, resp->data.data_val, (bufferlen < resp->data.data_len ? bufferlen : resp->data.data_len));
+ if (buffer != NULL && resp->data.data_val != NULL) {
+ int lengthtocopy = ((bufferlen - 1) < resp->data.data_len ? (bufferlen - 1) : resp->data.data_len);
+ strncpy(buffer, resp->data.data_val, lengthtocopy);
+ }
#ifdef DEBUG
else
printf("Supplied buffer is null!\n");