BBS:      TELESC.NET.BR
Assunto:  Win32 debug heap assertion after reading a cached filter filter while
De:       Rob Swindell
Data:     Thu, 12 Mar 2026 19:09:39 -0700
-----------------------------------------------------------
https://gitlab.synchro.net/main/sbbs/-/issues/1099#note_8572

Tried to create a small reproduction case for this issue, unsuccessfully.

Created xpdev/strlisttest.c:
```
#include "str_list.h"
#include "threadwrap.h"
#include "genwrap.h"

str_list_t list;

static char* process_findstr_item(size_t index, char *str, void* cbdata)
{
	SKIP_WHITESPACE(str);
	truncnl(str);
	return c_unescape_str(str);
}

void thread(void* arg) {
	const char* fname = arg;
	FILE *fp;
	printf("Reading %s\n", fname);
	if ((fp = fopen(fname, "r")) == NULL)
		return;

	list = strListReadFile(fp, NULL, 1000);
	strListModifyEach(list, process_findstr_item, /* cbdata: */ NULL);

	fclose(fp);
	int count;
	COUNT_LIST_ITEMS(list, count);
	printf("Read %d items\n", count);
}

int main(int argc, char ** argv) {

	for (int i = 1; i < argc; ++i) {
		_beginthread(thread, 0, argv[i]);
		SLEEP(2000);
		printf("Freeing list\n");
		strListFree(&list);
		printf("Done freeing list\n");
	}
	
	return 0;
}
```

Built it for Win32-debug with this command-line:
```
cl /Zi /fsanitize=address -DHAS_STDINT_H strlisttest.c str_list.c genwrap.c xpprintf.c
```

And ran the result like this:
```
strlisttest s:\sbbs\text\ip.can s:\sbbs\text\host.can s:\sbbs\text\ip.can s:\sbbs\text\host.can s:\sbbs\text\ip-silent.can
```

No errors or exceptions of any kind reported.
n
---
  mSynchronetn  hgVertrauen n hHome of Synchronet n gh[vert/cvs/bbs].synchro.net

-----------------------------------------------------------
[Voltar]