Dat wil dus niet echt. Eerst maar eens de code:
De comments spreken hopelijk voor zich, want er gebeurt niet bijster veel.
Dit gaat soms goed en soms niet. Het schrijven naar de pointers gaat allemaal goed, maar op het moment dat de LPDIRECT3DTEXTURE9 geSet wordt, crasht de boel. Ook zijn sommige fullpath's leeg (of er staat een \0 op de verkeerde plek).
Wat er gecontroleerd is:
En dit is wat de debugconsole rapporteert:
Die 'Invalid parameter passed to C runtime function.'-meldingen krijg ik altijd, ook als ik niet die functie gebruik, maar Google en met de hand debuggen (commenten en msgbox enzo) bieden helaas geen oplossing voor die vage melding: grote kans dat er intern in D3D9 wat mis gaat. Kan toch gerelateerd zijn. En die laatste is helaas een standaardfoutmelding waar ik niks wijzer van word (de tweede bit op 1 geloof ik).
Ziet iemand wat er fout gaat?
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| void [...]::setCacheSize(void* cache,int newsize) { [...] if(numobjects > 0) Debug.msgbox(objects[numobjects-1].diffusetex->fullpath,"Test"); // Store old position size_t oldposition = (size_t)&textures[0]; // Resize texturecachesize = newsize; textures = (TEXTURE*)realloc(textures,texturecachesize*sizeof(TEXTURE)); // Determine move in memory ssize_t offset = (size_t)&textures[0] - oldposition; // Fix references for(unsigned int i = 0;i < numobjects;i++) { objects[i].diffusetex = (TEXTURE*)((char*)objects[i].diffusetex + offset); objects[i].speculartex = (TEXTURE*)((char*)objects[i].speculartex + offset); objects[i].normaltex = (TEXTURE*)((char*)objects[i].normaltex + offset); objects[i].parallaxtex = (TEXTURE*)((char*)objects[i].parallaxtex + offset); objects[i].ambienttex = (TEXTURE*)((char*)objects[i].ambienttex + offset); } if(numobjects > 0) Debug.msgbox(objects[numobjects-1].diffusetex->fullpath,"Test"); [...] } typedef struct { LPDIRECT3DTEXTURE9 pointer; char fullpath[MAX_PATH]; } TEXTURE; typedef struct { [...] TEXTURE *diffusetex,*speculartex,*normaltex,*parallaxtex,*ambienttex; [...] } OBJECT; |
De comments spreken hopelijk voor zich, want er gebeurt niet bijster veel.
Dit gaat soms goed en soms niet. Het schrijven naar de pointers gaat allemaal goed, maar op het moment dat de LPDIRECT3DTEXTURE9 geSet wordt, crasht de boel. Ook zijn sommige fullpath's leeg (of er staat een \0 op de verkeerde plek).
Wat er gecontroleerd is:
- Er zijn geen threads die tegelijk de data gebruiken.
- Op het moment dat er geschoven wordt (bij een *re*alloc dus) gaat het mis.
En dit is wat de debugconsole rapporteert:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| [2268] Direct3D9: (INFO) :Direct3D9 Debug Runtime selected. [... Standaard opstarttroep ...] [2268] Invalid parameter passed to C runtime function. [2268] Invalid parameter passed to C runtime function. [2268] Invalid parameter passed to C runtime function. [2268] Invalid parameter passed to C runtime function. [2268] Invalid parameter passed to C runtime function. [2268] Invalid parameter passed to C runtime function. [2268] Invalid parameter passed to C runtime function. [2268] Invalid parameter passed to C runtime function. [2268] Invalid parameter passed to C runtime function. [2268] Invalid parameter passed to C runtime function. [2268] Invalid parameter passed to C runtime function. [2268] Invalid parameter passed to C runtime function. [2268] Invalid parameter passed to C runtime function. [2268] Error - [2268] RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly |
Die 'Invalid parameter passed to C runtime function.'-meldingen krijg ik altijd, ook als ik niet die functie gebruik, maar Google en met de hand debuggen (commenten en msgbox enzo) bieden helaas geen oplossing voor die vage melding: grote kans dat er intern in D3D9 wat mis gaat. Kan toch gerelateerd zijn. En die laatste is helaas een standaardfoutmelding waar ik niks wijzer van word (de tweede bit op 1 geloof ik).
Ziet iemand wat er fout gaat?