Skip to content

Commit

Permalink
Guard against arrayCreate(-1,...)
Browse files Browse the repository at this point in the history
Use arrayCreate instead of `listArray(listFill(...))`


git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@20830 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed May 26, 2014
1 parent 19ecbf7 commit 7632534
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
4 changes: 2 additions & 2 deletions Compiler/BackEnd/Uncertainties.mo
Expand Up @@ -713,8 +713,8 @@ algorithm

ne=listLength(yEqMap);
nv=listLength(yVarMap);
ass1=listArray(List.fill(-1,ne));
ass2=listArray(List.fill(-1,nv));
ass1=arrayCreate(ne,-1);
ass2=arrayCreate(nv,-1);
true = BackendDAEEXT.setAssignment(ne,nv,ass1,ass2);
Matching.matchingExternalsetIncidenceMatrix(nv,ne,my);
BackendDAEEXT.matching(nv,ne,1,-1,0.0,0);
Expand Down
20 changes: 12 additions & 8 deletions SimulationRuntime/c/meta/meta_modelica_builtin.c
Expand Up @@ -564,12 +564,16 @@ modelica_metatype boxptr_listDelete(threadData_t *threadData,modelica_metatype l

modelica_metatype arrayCreate(modelica_integer nelts, modelica_metatype val)
{
void* arr = (struct mmc_struct*)mmc_mk_box_no_assign(nelts, MMC_ARRAY_TAG);
void **arrp = MMC_STRUCTDATA(arr);
int i = 0;
for(i=0; i<nelts; i++)
arrp[i] = val;
return arr;
if (nelts < 0) {
MMC_THROW();
} else {
void* arr = (struct mmc_struct*)mmc_mk_box_no_assign(nelts, MMC_ARRAY_TAG);
void **arrp = MMC_STRUCTDATA(arr);
int i = 0;
for(i=0; i<nelts; i++)
arrp[i] = val;
return arr;
}
}

modelica_metatype arrayList(modelica_metatype arr)
Expand All @@ -578,9 +582,9 @@ modelica_metatype arrayList(modelica_metatype arr)
int nelts = MMC_HDRSLOTS(MMC_GETHDR(arr))-1;
void **vecp = MMC_STRUCTDATA(arr);
void *res = mmc_mk_nil();

for(; nelts >= 0; --nelts)
for(; nelts >= 0; --nelts) {
res = mmc_mk_cons(vecp[nelts],res);
}
return res;
}

Expand Down

0 comments on commit 7632534

Please sign in to comment.