global static pointer variable in DLL

torhu no at spam.invalid
Sun May 18 14:34:22 PDT 2008


Zarathustra wrote:
> 
> Oh, I find out something.
> The most crashes occur in similar calls (in DLL) like following:
> ________________________________________________________
> offs += fprintf(gl2ps->stream, "%%PDF-1.4\n");
> ________________________________________________________
> it looks like DLL haven't got access to FILE(gl2ps->stream), but why?
> The FILE is operand of gl2psBeginPage.
> Call of gl2psBeginPage function in my D code is in following function:
> ________________________________________________________
> extern (C) void
> SaveFile(){
> 	FILE* fp;
> 	int state = GL2PS_OVERFLOW;
> 	int buffsize = 0;
>             		
> 	try{
> 		fp = fopen("out.pdf", "wb");
> 		while(state == GL2PS_OVERFLOW){
> 			buffsize += 1024*1024;
> 
> 			gl2psBeginPage(
> 				"test", 
> 				"gl2psTestSimple", 
> 				null, 
> 				GL2PS_PDF, 
> 				GL2PS_SIMPLE_SORT,
> 				GL2PS_DRAW_BACKGROUND | GL2PS_USE_CURRENT_VIEWPORT,
> 				GL_RGBA, 
> 				0, 
> 				null, 
> 				0, 
> 				0, 
> 				0, 
> 				buffsize, 
> 				fp, 
> 				"out.pdf"
> 			);
> 			
> 			RenderFrame();
> 			state = gl2psEndPage();
> 		}
> 		fclose(fp);
> 		MessageBoxA(null, "File saved", "Information", MB_OK | MB_ICONINFORMATION);
> 	}
> 	catch(Object o){
> 		MessageBoxA(null, cast(char*)o.toString(), "Critical Error", MB_OK | MB_ICONERROR);
> 	}
> }
> ________________________________________________________
> exactly: gl2ps->stream = fp;
> 

Have you tried debugging this code with ddbg, and checked what the 
actual values of gl2ps and gl2ps->stream are when it crashes?

http://ddbg.mainia.de/


More information about the Digitalmars-d-learn mailing list