PHP_HTTP_API char *_http_absolute_url(const char *url TSRMLS_DC)
{
- char *abs = estrdup(url);
- php_url *purl = php_url_parse(abs);
+ char *abs = NULL;
+ php_url *purl = NULL;
- STR_SET(abs, NULL);
+ if (url) {
+ purl = php_url_parse(abs = estrdup(url));
+ STR_SET(abs, NULL);
+ if (!purl) {
+ http_error_ex(HE_WARNING, HTTP_E_URL, "Could not parse URL (%s)", url);
+ return NULL;
+ }
+ }
+
+ http_build_url(0, purl, NULL, NULL, &abs, NULL);
if (purl) {
- http_build_url(0, purl, NULL, NULL, &abs, NULL);
php_url_free(purl);
- } else {
- http_error_ex(HE_WARNING, HTTP_E_URL, "Could not parse URL (%s)", url);
}
return abs;