fn abc() string {
	unsafe {
		mut fullpath := vcalloc(4)
		fullpath[0] = `a`
		fullpath[1] = `b`
		fullpath[2] = `c`
		fullpath[3] = 0
		return fullpath.vstring()
	}
	return ''
}

fn def() string {
	unsafe {
		mut fullpath := vcalloc(4)
		fullpath[0] = `a`
		fullpath[1] = `b`
		fullpath[2] = `c`
		fullpath[3] = 0
		return fullpath.vstring_with_len(3)
	}
	return ''
}

fn main() {
	assert 'abc' == abc()
	assert 'abc' == def()
	abc_str1 := ptr_str(abc().str)
	abc_str2 := ptr_str(abc().str)
	println('abc_str1: $abc_str1')
	println('abc_str2: $abc_str2')
	assert abc_str1 != abc_str2
}
