# stashFile in save_game() never gets freed since the process exits
# before save_game() returns.  Wildcards at start and end of function
# names since they get mangled by the C++ compiler and mecheck goes
# by the mangled names.
#
# Also, the first "obj:*" is for the new() operator, which gets mangled
# in the valgrind library, and might be mangled differently in different
# version of valgrind.
#
# NOTE: The number of copies of "obj:*libstdc++*" might need to be changed
# for different versions of the C++ library.
{
	save_game_savedir_leak
	Memcheck:Leak
	obj:*
	obj:*libstdc++*
	obj:*libstdc++*
	obj:*libstdc++*
	obj:*libstdc++*
	fun:*get_savedir_filename*
	fun:*save_game*
}

# Not sure what causes escape_path_spaces() in save_game() to leak, but
# since we're going to be exiting right away it doesn't really matter.
{
	save_game_escape_path_leak
	Memcheck:Leak
	obj:*
	obj:*libstdc++*
	obj:*libstdc++*
	obj:*libstdc++*
	fun:*escape_path_spaces*
	fun:*save_game*
}

# The error variable in end() is stuff.cc never gets freed since
# exit() is called before end() returns.  See above suppression for more
# notes
{
	end_error_leak
	Memcheck:Leak
	obj:*
	obj:*libstdc++*
	obj:*libstdc++*
	obj:*libstdc++*
	obj:*libstdc++*
	obj:*libstdc++*
	fun:*end*
}

# The Berkeley DB code sometimes writes the contents of an unitialized buffer
# when the save/db/ and save/des/ files are being generated.
{
	berkeley_db_write
	Memcheck:Param
	pwrite64(buf)
	fun:pwrite64
	fun:__os_io
	fun:__memp_pgwrite
	fun:__memp_bhwrite
	fun:__memp_sync_int
	fun:__memp_fsync
	fun:__db_sync
}