Hello all, I am new in the mailling list. I am french and my english is probably not good. I think i have a bug report ;) I use Win32::GUI version 0.0.425. I have a random error with GetOpenFileName. my $ret = Win32::GUI::GetOpenFileName( -title => "Choose a text file", -filter => [ 'Text documents (*.txt)' => '*.txt', 'All files' => '*.*' ], ); My script stop and i receive in my console : Out of memory! Callback called exit. This error append only when i use the filter option of GetOpenFileName. I look in gui.xs file and i think this error come from the filterlen variable. filterlen is not set to 0 and use after like : filterlen += SvCUR(*t) + 1; so filterlen is not good. filterlen must be declare to 0. The code below come from an old Version: 0.0.340 (02 Jul 1999) but it's probably the same code in version 0425 for GetOPenFileName function. I have not tested with correction. I want first found 0.0.425 source code. Laurent. ---- extract of GetOpenFileName function ----- if(strcmp(option, "-filter") == 0) { next_i = i + 1; if(SvROK(ST(next_i)) && SvTYPE(SvRV(ST(next_i))) == SVt_PVAV) { AV* filters; SV** t; int i, filterlen = 0; // Original code : int i, filterlen; char *fpointer; filters = (AV*)SvRV(ST(next_i)); for(i=0; i<=av_len(filters); i++) { t = av_fetch(filters, i, 0); if(t != NULL) { filterlen += SvCUR(*t) + 1; } } filterlen += 2; filter = (char *) safemalloc(filterlen); fpointer = filter; for(i=0; i<=av_len(filters); i++) { t = av_fetch(filters, i, 0); if(t != NULL) { strcpy(fpointer, SvPV(*t, na)); fpointer += SvCUR(*t) + 1; *fpointer = 0; } } fpointer++; *fpointer = 0; ofn.lpstrFilter = (LPCTSTR) filter; } else { if(dowarn) warn("Win32::GUI: argument to -filter is not an array reference!"); } ------------------------------------------