@@ -136,6 +136,31 @@ static int lcurl_url_get(lua_State *L, CURLUPart what, CURLUcode empty) {
136136 return 1 ;
137137}
138138
139+ static int lcurl_url_to_s (lua_State * L ) {
140+ lcurl_url_t * p = lcurl_geturl (L );
141+ char * part = NULL ;
142+
143+ CURLUcode code = curl_url_get (p -> url , CURLUPART_URL , & part , 0 );
144+
145+ if (code != CURLUE_OK ) {
146+ if (part ) {
147+ curl_free (part );
148+ }
149+
150+ return lcurl_fail_ex (L , LCURL_ERROR_RAISE , LCURL_ERROR_URL , code );
151+ }
152+
153+ if (part == NULL ) {
154+ lua_pushliteral (L , "" );
155+ }
156+ else {
157+ lua_pushstring (L , part );
158+ curl_free (part );
159+ }
160+
161+ return 1 ;
162+ }
163+
139164#define ENTRY_PART (N , S , E ) static int lcurl_url_set_##N(lua_State *L){\
140165 return lcurl_url_set(L, CURL##S);\
141166}
@@ -172,7 +197,7 @@ static const struct luaL_Reg lcurl_url_methods[] = {
172197 { "dup" , lcurl_url_dup },
173198 { "cleanup" , lcurl_url_cleanup },
174199 { "__gc" , lcurl_url_cleanup },
175- { "__tostring" , lcurl_url_get_url },
200+ { "__tostring" , lcurl_url_to_s },
176201
177202 { NULL ,NULL }
178203};
0 commit comments