On 10/24/2011 8:19 PM, ChingChang Hsiao wrote:
case SQLITE_INTEGER:
sqlite3_result_int64( context, sqlite3_value_int64(argv[0]) );
break;
case SQLITE_NULL:
sqlite3_result_null( context );
break;
If you want to just return an argument unchanged, you can use
sqlite3_result_value. In this case, you can probably do this whenever
the type is anything other than SQLITE_TEXT.
string token;
token = sqlSortHelper.GetAlphaNumericOrderToken(
(char*)sqlite3_value_text(argv[0]) );
sqlite3_result_text( context, token.c_str(), token.length(), NULL );
NULL as the last parameter of sqlite3_result_text is the same as
SQLITE_STATIC, telling SQLite that the string will persist sufficiently
long beyond sqlite3_result_text call. This is not the case here - the
string is destroyed and becomes garbage soon after sqlite3_result_text
call. You should be passing SQLITE_TRANSIENT as the last parameter.
--
Igor Tandetnik
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users