Skip to content

Commit

Permalink
Initial support for non-ASCII IRI format strings
Browse files Browse the repository at this point in the history
  • Loading branch information
VOS Maintainer committed Dec 5, 2017
1 parent 4d14b67 commit 4183739
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 15 deletions.
38 changes: 24 additions & 14 deletions libsrc/Wi/bif_xml.c
Original file line number Diff line number Diff line change
Expand Up @@ -3710,11 +3710,11 @@ DBG_NAME(box_cast_to_UTF8) (DBG_PARAMS caddr_t * qst, caddr_t data)
return box_wide_as_utf8_char (data, wcslen ((wchar_t *) data), DV_LONG_STRING);
case DV_BLOB_WIDE_HANDLE:
{
caddr_t res;
result = blob_to_string (((query_instance_t *) qst)->qi_trx, data);
res = box_wide_as_utf8_char (result, wcslen ((wchar_t *) result), DV_LONG_STRING);
dk_free_tree (result);
return res;
caddr_t res = blob_to_string (((query_instance_t *) qst)->qi_trx, data);
result = box_wide_as_utf8_char (res, wcslen ((wchar_t *) res), DV_LONG_STRING);
dk_free_tree (res);
box_flags (result) |= BF_UTF8;
return result;
}
case DV_XML_ENTITY:
{
Expand All @@ -3723,47 +3723,57 @@ DBG_NAME(box_cast_to_UTF8) (DBG_PARAMS caddr_t * qst, caddr_t data)
if (ent->xe_attr_name)
{
res = ent->_->xe_currattrvalue (ent);
return DBG_NAME(box_copy) (DBG_ARGS res);
result = DBG_NAME(box_copy) (DBG_ARGS res);
}
else
{
ent->_->DBG_NAME(xe_string_value) (DBG_ARGS ent, &res, DV_STRING);
return res;
result = NULL;
ent->_->DBG_NAME(xe_string_value) (DBG_ARGS ent, &result, DV_STRING);
}
if (DV_STRING == DV_TYPE_OF (result))
box_flags (result) |= BF_UTF8;
return result;
}
case DV_STRING:
case DV_UNAME:
{
/* Bug 5763: No need:
encoding_handler_t * eh = eh_get_handler (CHARSET_NAME(QST_CHARSET (qst), "ISO-8859-1"));
if (eh)
return literal_as_utf8 (eh, data, box_length (data) - 1);
else
*/
if (box_flags (data) & BF_UTF8)
return DBG_NAME(box_copy) (DBG_ARGS data);
result = DBG_NAME (box_narrow_string_as_utf8) (DBG_ARGS NULL, data, 0, QST_CHARSET (qst), &err, 1);
if (err)
sqlr_resignal (err);
box_flags (result) |= BF_UTF8;
return result;
}
case DV_UNAME:
result = DBG_NAME(box_dv_short_nchars) (DBG_ARGS data, box_length (data) - 1);
box_flags (result) |= BF_UTF8;
return result;
case DV_DB_NULL:
return NEW_DB_NULL;
default:
{
/* Bug 5763: No need:
encoding_handler_t * eh = eh_get_handler (CHARSET_NAME(QST_CHARSET (qst), "ISO-8859-1"));
*/
caddr_t res;
result = box_cast (qst, data, (sql_tree_tmp*) varchar, dtp);
caddr_t res = box_cast (qst, data, (sql_tree_tmp*) varchar, dtp);
/* Bug 5763: No need:
if (eh)
res = literal_as_utf8 (eh, result, box_length (result) - 1);
else
*/
res = box_narrow_string_as_utf8 (NULL, result, 0, QST_CHARSET (qst), &err, 1);
dk_free_tree (result);
result = box_narrow_string_as_utf8 (NULL, res, 0, QST_CHARSET (qst), &err, 1);
dk_free_tree (res);
if (err)
sqlr_resignal (err);
return res;
if (DV_STRING == DV_TYPE_OF (result))
box_flags (result) |= BF_UTF8;
return result;
}
}
}
Expand Down
8 changes: 7 additions & 1 deletion libsrc/Wi/rdfbox.c
Original file line number Diff line number Diff line change
Expand Up @@ -2239,7 +2239,13 @@ bif_rdf_sqlval_of_obj (caddr_t * qst, caddr_t * err_ret, state_slot_t ** args)
rb_dt_lang_check(rb);
if (((RDF_BOX_DEFAULT_TYPE == rb->rb_type) && (RDF_BOX_DEFAULT_LANG == rb->rb_lang))
|| ((1 < BOX_ELEMENTS (args)) && bif_long_arg (qst, args, 1, "__rdf_sqlval_of_obj")) )
return box_copy_tree (rb->rb_box);
{
caddr_t res;
res = box_copy_tree (rb->rb_box);
if (DV_STRING == DV_TYPE_OF (res))
box_flags (res) |= BF_UTF8;
return res;
}
return box_copy (rb);
}

Expand Down

0 comments on commit 4183739

Please sign in to comment.