rem: LOG(L_ERR, "db_init: No memory left\n");
context: db_con_t* db_init(const char* _url){	struct db_id* id;	struct my_con* con;	db_con_t* res;	id = 0;	res = 0;	if (!_url) {		LOG(L_ERR, "db_init: Invalid parameter value\n");		return 0;	}	res = pkg_malloc(sizeof(db_con_t) + sizeof(struct my_con*));	if (!res) {		LOG(L_ERR, "db_init: No memory left\n");		return 0;	}	memset(res, 0, sizeof(db_con_t) + sizeof(struct my_con*));	id = new_db_id(_url);	if (!id) {		LOG(L_ERR, "db_init: Cannot parse URL '%s'\n", _url);		goto err;	}	     /* Find the connection in the pool */	con = (struct my_con*)pool_get(id);	if (!con) {		DBG("db_init: Connection '%s' not found in pool\n", _url);		     /* Not in the pool yet */		con = new_connection(id);		if (!con) {			LOG(L_ERR, "db_init: No memory left\n");			goto err;		}		pool_insert((struct pool_con*)con);	} else {		DBG("db_init: Connection '%s' found in pool\n", _url);	}	res->tail = (unsigned long)con;	return res; err:	if (id) free_db_id(id);	if (res) pkg_free(res);	return 0;}