From e23dff21418b5689ce673362cc7c7c13e39d44e8 Mon Sep 17 00:00:00 2001 From: Koennecke Mark Date: Thu, 4 Dec 2014 11:33:43 +0100 Subject: [PATCH] -Fixed a small bug in sicsdata copytonode where the start position was not honoured --- sicsdata.c | 2 +- sicsobj.c | 76 +++++++++++++++++++++++++++--------------------------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/sicsdata.c b/sicsdata.c index f00784e7..8ccd7d63 100644 --- a/sicsdata.c +++ b/sicsdata.c @@ -954,7 +954,7 @@ static int copyToNode(pSICSData self, int argc, char *argv[], } node->value.arrayLength = length; } - memcpy(node->value.v.intArray, self->data, length*sizeof(int)); + memcpy(node->value.v.intArray, self->data + start, length*sizeof(int)); break; case HIPFLOATAR: case HIPFLOATVARAR: diff --git a/sicsobj.c b/sicsobj.c index abe477f6..330e5933 100644 --- a/sicsobj.c +++ b/sicsobj.c @@ -459,7 +459,7 @@ static int ListObj(pSICSOBJ self, SConnection * pCon, int argc, /*---------------------------------------------------------------------------*/ int InvokeSICSOBJ(SConnection * pCon, SicsInterp * pSics, void *pData, - int argc, char *argv[]) + int argc, char *argv[]) { pSICSOBJ self = NULL; int status; @@ -476,50 +476,50 @@ int InvokeSICSOBJ(SConnection * pCon, SicsInterp * pSics, void *pData, if (parNode != NULL && isNodePrintable(parNode)) { status = GetHdbProperty(parNode,"geterror",buffer,sizeof(buffer)); if (status == 1 && strstr(buffer,"none") == NULL){ - SCPrintf(pCon,eValue,"ERROR: %s on last read of %s", buffer, argv[0]); - SCPrintf(pCon,eValue,"%s = -99999", argv[0]); - return 0; - } - status = GetHipadabaPar(parNode, &data, pCon); - if (status != 1) { - return 0; - } - parData = formatValue(data, parNode); - if (parData == NULL) { - SCWrite(pCon, "ERROR: failed to format data", eError); - return 0; - } - SCPrintf(pCon, eValue, "%s = %s", argv[0], GetCharArray(parData)); - DeleteDynString(parData); - return 1; - } else { - SCWrite(pCon, "ERROR: nothing to print", eError); + SCPrintf(pCon,eValue,"ERROR: %s on last read of %s", buffer, argv[0]); + SCPrintf(pCon,eValue,"%s = -99999", argv[0]); + return 0; + } + status = GetHipadabaPar(parNode, &data, pCon); + if (status != 1) { return 0; } - } else { - parNode = GetHipadabaNode(self->objectNode, argv[1]); - if(parNode == NULL){ - strtolower(argv[1]); - parNode = GetHipadabaNode(self->objectNode,argv[1]); + parData = formatValue(data, parNode); + if (parData == NULL) { + SCWrite(pCon, "ERROR: failed to format data", eError); + return 0; } - } - if (parNode != NULL && parNode->value.dataType == HIPFUNC) { - status = invokeOBJFunction(self, parNode, pCon, argc - 2, &argv[2]); + SCPrintf(pCon, eValue, "%s = %s", argv[0], GetCharArray(parData)); + DeleteDynString(parData); + return 1; } else { - snprintf(buffer, sizeof buffer, "%s ", argv[0]); - status = ProcessSICSHdbPar(self->objectNode, pCon, buffer, - argc - 1, &argv[1]); + SCWrite(pCon, "ERROR: nothing to print", eError); + return 0; + } +} else { + parNode = GetHipadabaNode(self->objectNode, argv[1]); + if(parNode == NULL){ + strtolower(argv[1]); + parNode = GetHipadabaNode(self->objectNode,argv[1]); + } +} +if (parNode != NULL && parNode->value.dataType == HIPFUNC) { + status = invokeOBJFunction(self, parNode, pCon, argc - 2, &argv[2]); +} else { + snprintf(buffer, sizeof buffer, "%s ", argv[0]); + status = ProcessSICSHdbPar(self->objectNode, pCon, buffer, + argc - 1, &argv[1]); +} +if (status == -1) { + if (strcmp(argv[1], "makescriptfunc") == 0) { + return MakeScriptFunc(self, pCon, argc, argv); + } else if (strcmp(argv[1], "list") == 0) { + return ListObj(self, pCon, argc, argv); } - if (status == -1) { - if (strcmp(argv[1], "makescriptfunc") == 0) { - return MakeScriptFunc(self, pCon, argc, argv); - } else if (strcmp(argv[1], "list") == 0) { - return ListObj(self, pCon, argc, argv); - } /* error message written by the caller */ - } +} - return status; +return status; } /*---------------------------------------------------------------------------*/