rem: stbl.s = CON_TABLE(_h);
add: stbl.s = (char*)CON_TABLE(_h);
context: int dbt_update(db_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v,	      db_key_t* _uk, db_val_t* _uv, int _n, int _un){	tbl_cache_p _tbc = NULL;	dbt_table_p _dtp = NULL;	dbt_row_p _drp = NULL;	int i;		str stbl;	int *lkey=NULL, *lres=NULL;	if (!_h || !CON_TABLE(_h) || !_uk || !_uv || _un <= 0)	{#ifdef DBT_EXTRA_DEBUG		LOG(L_ERR, "DBT:dbt_update: Invalid parameter value\n");#endif		return -1;	}		stbl.s = CON_TABLE(_h);	stbl.len = strlen(CON_TABLE(_h));	_tbc = dbt_db_get_table(DBT_CON_CONNECTION(_h), &stbl);	if(!_tbc)	{		DBG("DBT:dbt_update: table does not exist!\n");		return -1;	}	lock_get(&_tbc->sem);	_dtp = _tbc->dtp;	if(!_dtp || _dtp->nrcols < _un)	{		DBG("DBT:dbt_update: table not loaded or more values"			" to update than columns!\n");		goto error;	}	if(_k)	{		lkey = dbt_get_refs(_dtp, _k, _n);		if(!lkey)			goto error;	}	lres = dbt_get_refs(_dtp, _uk, _un);	if(!lres)		goto error;	DBG("DBT:dbt_update: ---- \n");	_drp = _dtp->rows;	while(_drp)	{		if(dbt_row_match(_dtp, _drp, lkey, _o, _v, _n))		{ // update fields			for(i=0; i<_un; i++)			{				if(dbt_is_neq_type(_dtp->colv[lres[i]]->type, _uv[i].type))				{					DBG("DBT:dbt_update: incompatible types!\n");					goto error;				}								if(dbt_row_update_val(_drp, &(_uv[i]), _uv[i].type, lres[i]))				{					DBG("DBT:dbt_update: cannot set v[%d] in c[%d]!\n",							i, lres[i]);					goto error;				}			}		}		_drp = _drp->next;	}	dbt_table_update_flags(_dtp, DBT_TBFL_MODI, DBT_FL_SET, 1);	#ifdef DBT_EXTRA_DEBUG	dbt_print_table(_dtp, NULL);#endif		lock_release(&_tbc->sem);	if(lkey)		pkg_free(lkey);	if(lres)		pkg_free(lres);    return 0;error:	lock_release(&_tbc->sem);	if(lkey)		pkg_free(lkey);	if(lres)		pkg_free(lres);		DBG("DBT:dbt_update: error while updating table!\n");    	return -1;}