|
@@ -3053,6 +3053,12 @@ void la_AddDataInst(void *ReadInstance, char *ReadNUID, void *ActualInstance){
|
|
|
lstPushItem(l, head); //always push so we get the latest during ptr sync.
|
|
|
}
|
|
|
|
|
|
+void* laGetInstanceViaNUID(char *NUID, int LoadFileIfFound){
|
|
|
+ void* inst=la_GetReadDBInstNUID(NUID); if(inst) return inst; if(!LoadFileIfFound) return 0;
|
|
|
+ laLoadHyperResources(NUID);
|
|
|
+ return la_GetReadDBInstNUID(NUID);
|
|
|
+}
|
|
|
+
|
|
|
laPtrSync *la_AddPtrSyncDirect(void *Refer, void *Parent, laProp *Sub){
|
|
|
laPtrSync *ps = memAcquireSimple(sizeof(laPtrSync));
|
|
|
ps->RefDB = Refer;
|
|
@@ -3243,7 +3249,9 @@ int la_ExtractProp(laUDF *udf, laManagedUDF* mUDF, laPropPack *pp, void *ParentI
|
|
|
Instance = la_ReadPointer(udf);
|
|
|
if (Instance && p->Offset>=0){
|
|
|
if (p->OffsetIsPointer) la_AddPtrSyncCommand(Instance, ParentInst, 0, p);
|
|
|
- else la_AddDataInst(Instance, 0, ((BYTE *)pp->LastPs->UseInstance + p->Offset));
|
|
|
+ else{ la_AddDataInst(Instance, 0, ((BYTE *)pp->LastPs->UseInstance + p->Offset));
|
|
|
+ printf("Hey problem!\n");
|
|
|
+ }//<-- looks like this could be problem, data inst can only be memAcquired, so it will always be a pointer.
|
|
|
}
|
|
|
}elif (SubMode == (short)(LA_UDF_REFER | LA_UDF_HYPER_ITEM)){
|
|
|
char NUID[32]={0};
|
|
@@ -3445,6 +3453,7 @@ void la_RematchPointers(int Mode){
|
|
|
while(inst=lstPopPointer(&MAIN.RenewHyper2s)){ laMemNodeHyper* h=memGetHead(inst,0);memMakeHyperData(h);memAssignRef(h,&h->FromFile,0); }
|
|
|
}
|
|
|
|
|
|
+void la_ClearDBInst1(){ memset(&MAIN.DBInst1,0,sizeof(laHash65536)); }
|
|
|
|
|
|
int la_WriteHyperRecords(laUDF *udf){
|
|
|
int i = 0;
|
|
@@ -3628,6 +3637,7 @@ int laExtractUDF(laUDF *udf, laManagedUDF* mUDF, int Mode){
|
|
|
}
|
|
|
|
|
|
la_RematchPointers(Mode);
|
|
|
+ la_ClearDBInst1();
|
|
|
|
|
|
laHideProgress();
|
|
|
|