-Fixed a small bug in sicsdata copytonode where the start position was not honoured

This commit is contained in:
2014-12-04 11:33:43 +01:00
parent f274f3bcdb
commit e23dff2141
2 changed files with 39 additions and 39 deletions

View File

@ -954,7 +954,7 @@ static int copyToNode(pSICSData self, int argc, char *argv[],
} }
node->value.arrayLength = length; 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; break;
case HIPFLOATAR: case HIPFLOATAR:
case HIPFLOATVARAR: case HIPFLOATVARAR:

View File

@ -459,7 +459,7 @@ static int ListObj(pSICSOBJ self, SConnection * pCon, int argc,
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
int InvokeSICSOBJ(SConnection * pCon, SicsInterp * pSics, void *pData, int InvokeSICSOBJ(SConnection * pCon, SicsInterp * pSics, void *pData,
int argc, char *argv[]) int argc, char *argv[])
{ {
pSICSOBJ self = NULL; pSICSOBJ self = NULL;
int status; int status;
@ -476,50 +476,50 @@ int InvokeSICSOBJ(SConnection * pCon, SicsInterp * pSics, void *pData,
if (parNode != NULL && isNodePrintable(parNode)) { if (parNode != NULL && isNodePrintable(parNode)) {
status = GetHdbProperty(parNode,"geterror",buffer,sizeof(buffer)); status = GetHdbProperty(parNode,"geterror",buffer,sizeof(buffer));
if (status == 1 && strstr(buffer,"none") == NULL){ if (status == 1 && strstr(buffer,"none") == NULL){
SCPrintf(pCon,eValue,"ERROR: %s on last read of %s", buffer, argv[0]); SCPrintf(pCon,eValue,"ERROR: %s on last read of %s", buffer, argv[0]);
SCPrintf(pCon,eValue,"%s = -99999", argv[0]); SCPrintf(pCon,eValue,"%s = -99999", argv[0]);
return 0; return 0;
} }
status = GetHipadabaPar(parNode, &data, pCon); status = GetHipadabaPar(parNode, &data, pCon);
if (status != 1) { 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);
return 0; return 0;
} }
} else { parData = formatValue(data, parNode);
parNode = GetHipadabaNode(self->objectNode, argv[1]); if (parData == NULL) {
if(parNode == NULL){ SCWrite(pCon, "ERROR: failed to format data", eError);
strtolower(argv[1]); return 0;
parNode = GetHipadabaNode(self->objectNode,argv[1]);
} }
} SCPrintf(pCon, eValue, "%s = %s", argv[0], GetCharArray(parData));
if (parNode != NULL && parNode->value.dataType == HIPFUNC) { DeleteDynString(parData);
status = invokeOBJFunction(self, parNode, pCon, argc - 2, &argv[2]); return 1;
} else { } else {
snprintf(buffer, sizeof buffer, "%s ", argv[0]); SCWrite(pCon, "ERROR: nothing to print", eError);
status = ProcessSICSHdbPar(self->objectNode, pCon, buffer, return 0;
argc - 1, &argv[1]); }
} 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 */ /* error message written by the caller */
} }
return status; return status;
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/