rem: stbl.s = CON_TABLE(_h);
add: stbl.s = (char*)CON_TABLE(_h);
context: int dbt_delete(db_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v, int _n){	tbl_cache_p _tbc = NULL;	dbt_table_p _dtp = NULL;	dbt_row_p _drp = NULL, _drp0 = NULL;	int *lkey = NULL;	str stbl;	if (!_h || !CON_TABLE(_h))	{#ifdef DBT_EXTRA_DEBUG		LOG(L_ERR, "DBT:dbt_delete: 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_delete: error loading table <%s>!\n", CON_TABLE(_h));		return -1;	}	lock_get(&_tbc->sem);	_dtp = _tbc->dtp;	if(!_dtp)	{		DBG("DBT:dbt_delete: table does not exist!!\n");		goto error;	}		if(!_k || !_v || _n<=0)	{#ifdef DBT_EXTRA_DEBUG		LOG(L_ERR, "DBT:dbt_delete: delete all values\n");#endif		dbt_table_free_rows(_dtp);		lock_release(&_tbc->sem);		return 0;	}	lkey = dbt_get_refs(_dtp, _k, _n);	if(!lkey)		goto error;		_drp = _dtp->rows;	while(_drp)	{		_drp0 = _drp->next;		if(dbt_row_match(_dtp, _drp, lkey, _o, _v, _n))		{			// delete row			DBG("DBT:dbt_delete: deleting a row!\n");			if(_drp->prev)				(_drp->prev)->next = _drp->next;			else				_dtp->rows = _drp->next;			if(_drp->next)				(_drp->next)->prev = _drp->prev;			_dtp->nrrows--;			// free row			dbt_row_free(_dtp, _drp);		}		_drp = _drp0;	}	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);		return 0;	error:	lock_release(&_tbc->sem);	DBG("DBT:dbt_delete: error deleting from table!\n");    	return -1;}