LiteralNode* MAKE_system_privilege(const char* privilege) { thread_db* tdbb = JRD_get_thread_data(); Attachment* att = tdbb->getAttachment(); jrd_tra* tra = att->getSysTransaction(); string p(privilege); p.upper(); USHORT value = SCL_convert_privilege(tdbb, tra, p); USHORT* valuePtr = FB_NEW_POOL(*tdbb->getDefaultPool()) USHORT(value); LiteralNode* literal = FB_NEW_POOL(*tdbb->getDefaultPool()) LiteralNode(*tdbb->getDefaultPool()); literal->litDesc.dsc_dtype = dtype_short; literal->litDesc.dsc_length = sizeof(USHORT); literal->litDesc.dsc_scale = 0; literal->litDesc.dsc_sub_type = 0; literal->litDesc.dsc_address = reinterpret_cast<UCHAR*>(valuePtr); return literal; }