-Fixed a small bug in sicsdata copytonode where the start position was not honoured
This commit is contained in:
@ -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:
|
||||||
|
76
sicsobj.c
76
sicsobj.c
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
Reference in New Issue
Block a user