Microsoft Knowledge Base

BUG: GDI Memory Not Released in Windows 95 After Memory Error

Last reviewed: May 5, 1997

Article ID: Q134888 The information in this article applies to:

* Microsoft Visual FoxPro for Windows, versions 3.0, 3.0b, 5.0, 5.0a

 

SYMPTOMS

Running a program that uses up all GDI memory in Windows 95 causes this error:

Not enough memory to complete this operation

After the error message is closed, GDI memory is still not released. Running the program a second time causes Visual FoxPro to quit.

STATUS

Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

MORE INFORMATION

Steps to Reproduce Problem

1.Run the following program. You will get the error "Not enough memory to complete this operation." All GDI has been used and will not be released.

*Attempt to create and release 2500 windows

PRIVATE ALL EXCEPT g_*

cOldPrint = SET('PRINT',1) SET PRINT OFF SET PRINT TO

nMaxRows = 25 nMaxCols = 100

nBeforeHandles = SYS(1011)

WAIT WINDOW 'Patience ... may look dead, check system clock' NOWAIT

FOR i = -1 TO nMaxRows

FOR j = -1 to nMaxCols

cWindowName = 'Win'+ALLTRIM(STR(ABS(i)))+'_'+ALLTRIM(STR(ABS(j)))

DEFINE WINDOW (cWindowName);

FROM i,j TO i+10,j+10 ;

TITLE (cWindowName)

ACTIVATE WINDOW (cWindowName)

ENDFOR

ENDFOR

FOR i = -1 TO nMaxRows

FOR j = -1 to nMaxCols

RELEASE WINDOW

ENDFOR

ENDFOR

SET PRINT TO &cOldPrint

SET PRINT ON

 

nAfterHandles = SYS(1011)

nDiff = VAL(nAfterHandles) - VAL(nBeforeHandles)

?IIF(nDiff > 50,'FAIL','PASS')

 

* Clean up and exit

 

WAIT CLEAR

RELEASE ALL EXCEPT g_*

RETURN

 

2.Run the program again and Visual FoxPro will quit. Then GDI is released.