<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Snooda]]></title> 
<link>http://www.snooda.com/index</link> 
<description><![CDATA[Snooda's Blog]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Snooda]]></copyright>
<item>
<link>http://www.snooda.com/read/</link>
<title><![CDATA[lua_tolstring导致调用lua_next时的lua PANIC问题]]></title> 
<author>snooda &lt;admin@snooda.com&gt;</author>
<category><![CDATA[c程序设计]]></category>
<pubDate>Sat, 28 Apr 2012 09:49:01 +0000</pubDate> 
<guid>http://www.snooda.com/read/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;前两天在用lua_next遍历一个lua表的时候遇到了：PANIC: unprotected error in call to Lua API (invalid key to 'next')&nbsp;&nbsp;仔细检查了下代码和堆栈信息，发现没有问题，但为什么会说遍历失败呢？<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;找到文档看了下，原来lua_tolstring只支持number和string类型，但是对于number类型，在取值后也会转换其在表中的实际内容为string，而我遍历的表是使用默认自增索引作为key的，这样对key调用这个函数会导致key变成字符串，因而遍历有问题。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;如果表的key不一定是string，而又要用lua_tolstring获取它的值，那么建议先在栈上复制一份，然后对于复制的值进行获取。<br/><br/><br/><br/><br/><br/><br/>Tags - <a href="http://www.snooda.com/tags/lua/" rel="tag">lua</a>
]]>
</description>
</item><item>
<link>http://www.snooda.com/read/#blogcomment</link>
<title><![CDATA[[评论] lua_tolstring导致调用lua_next时的lua PANIC问题]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.snooda.com/read/#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>