You´re right!
This seems to be a bug, because the following works.
Here, I read str_pointer twice:


Content of "null.txt":
NULL
NULL

Content of "file.txt":
Hello
NULL

Code:
#include <acknex.h>
#include <default.c>

STRING* str1 = "#1";
STRING* str2 = "#1";
STRING* str_pointer = "#1";


function main()
{
 	var file;

	file = file_open_read("null.txt");
	file_str_readtow(file,str_pointer,NULL,5000); // NULL
	file_str_readtow(file,str_pointer,NULL,5000); // NULL
	file_close(file);
 	file = file_open_read("file.txt");
 
	file_str_readtow(file,str1,NULL,5000); // Hello
 	file_str_readtow(file,str2,NULL,5000); // NULL
	file_close(file);
	
	if(str_cmpi(str2,str_pointer)!=0){error("It works!");} // str_pointer includes "NULL" from other file
}



I use mostly txt_loadw for ingame text, not file_str_readtow, so I didn´t come across this bug.
You should give a bug report to jcl.


no science involved