diff options
-rw-r--r-- | cpp/src/Ice/Object.cpp | 9 | ||||
-rw-r--r-- | php/src/php5/Types.cpp | 12 | ||||
-rw-r--r-- | php/src/php7/Types.cpp | 12 | ||||
-rw-r--r-- | python/modules/IcePy/Types.cpp | 4 | ||||
-rw-r--r-- | ruby/src/IceRuby/Types.cpp | 30 |
5 files changed, 41 insertions, 26 deletions
diff --git a/cpp/src/Ice/Object.cpp b/cpp/src/Ice/Object.cpp index effce176db2..78235ce4d62 100644 --- a/cpp/src/Ice/Object.cpp +++ b/cpp/src/Ice/Object.cpp @@ -155,7 +155,14 @@ Ice::Object::_iceD_ice_ids(Incoming& inS, const Current& current) inS.readEmptyParams(); vector<string> ret = ice_ids(current); OutputStream* ostr = inS.startWriteParams(); - ostr->write(&ret[0], &ret[0] + ret.size(), false); + if(ret.empty()) + { + ostr->write(ret); + } + else + { + ostr->write(&ret[0], &ret[0] + ret.size(), false); + } inS.endWriteParams(); return true; } diff --git a/php/src/php5/Types.cpp b/php/src/php5/Types.cpp index 79fb6d2ca5b..061a5007fb7 100644 --- a/php/src/php5/Types.cpp +++ b/php/src/php5/Types.cpp @@ -1794,7 +1794,7 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* seq[i++] = static_cast<Ice::Byte>(l); zend_hash_move_forward_ex(arr, &pos); } - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindShort: @@ -1814,7 +1814,7 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* seq[i++] = static_cast<Ice::Short>(l); zend_hash_move_forward_ex(arr, &pos); } - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindInt: @@ -1834,7 +1834,7 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* seq[i++] = static_cast<Ice::Int>(l); zend_hash_move_forward_ex(arr, &pos); } - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindLong: @@ -1867,7 +1867,7 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* seq[i++] = l; zend_hash_move_forward_ex(arr, &pos); } - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindFloat: @@ -1898,7 +1898,7 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* seq[i++] = static_cast<Ice::Float>(d); zend_hash_move_forward_ex(arr, &pos); } - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindDouble: @@ -1929,7 +1929,7 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* seq[i++] = d; zend_hash_move_forward_ex(arr, &pos); } - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindString: diff --git a/php/src/php7/Types.cpp b/php/src/php7/Types.cpp index d5d3d528ba3..63fdbc7dbe1 100644 --- a/php/src/php7/Types.cpp +++ b/php/src/php7/Types.cpp @@ -1753,7 +1753,7 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* } ZEND_HASH_FOREACH_END(); - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindShort: @@ -1773,7 +1773,7 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* } ZEND_HASH_FOREACH_END(); - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindInt: @@ -1793,7 +1793,7 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* } ZEND_HASH_FOREACH_END(); - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindLong: @@ -1826,7 +1826,7 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* } ZEND_HASH_FOREACH_END(); - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindFloat: @@ -1857,7 +1857,7 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* } ZEND_HASH_FOREACH_END(); - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindDouble: @@ -1888,7 +1888,7 @@ IcePHP::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, zval* } ZEND_HASH_FOREACH_END(); - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindString: diff --git a/python/modules/IcePy/Types.cpp b/python/modules/IcePy/Types.cpp index 7ecc7379af7..00b821099b6 100644 --- a/python/modules/IcePy/Types.cpp +++ b/python/modules/IcePy/Types.cpp @@ -520,10 +520,10 @@ IcePy::StreamUtil::setSlicedDataMember(PyObject* obj, const Ice::SlicedDataPtr& if((*p)->bytes.size() > 0) { #if PY_VERSION_HEX >= 0x03000000 - bytes = PyBytes_FromStringAndSize(reinterpret_cast<const char*>(&(*p)->bytes[0]), + bytes = PyBytes_FromStringAndSize((*p)->bytes.empty() ? 0 : reinterpret_cast<const char*>(&(*p)->bytes[0]), static_cast<Py_ssize_t>((*p)->bytes.size())); #else - bytes = PyString_FromStringAndSize(reinterpret_cast<const char*>(&(*p)->bytes[0]), + bytes = PyString_FromStringAndSize((*p)->bytes.empty() ? 0 : reinterpret_cast<const char*>(&(*p)->bytes[0]), static_cast<Py_ssize_t>((*p)->bytes.size())); #endif } diff --git a/ruby/src/IceRuby/Types.cpp b/ruby/src/IceRuby/Types.cpp index d25cc274331..fb9aefe3ce8 100644 --- a/ruby/src/IceRuby/Types.cpp +++ b/ruby/src/IceRuby/Types.cpp @@ -270,7 +270,8 @@ IceRuby::StreamUtil::setSlicedDataMember(VALUE obj, const Ice::SlicedDataPtr& sl // // bytes // - volatile VALUE bytes = callRuby(rb_str_new, reinterpret_cast<const char*>(&(*p)->bytes[0]), + volatile VALUE bytes = callRuby(rb_str_new, + (*p)->bytes.empty() ? 0 : reinterpret_cast<const char*>(&(*p)->bytes[0]), static_cast<long>((*p)->bytes.size())); callRuby(rb_iv_set, slice, "@bytes", bytes); @@ -1187,7 +1188,7 @@ IceRuby::SequenceInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap* object volatile VALUE arr = Qnil; - Ice::OutputStream::size_type sizePos; + Ice::OutputStream::size_type sizePos = 0; if(optional) { if(elementType->variableLength()) @@ -1431,7 +1432,7 @@ IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALU } seq[static_cast<size_t>(i)] = static_cast<Ice::Byte>(val); } - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); } break; } @@ -1448,7 +1449,7 @@ IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALU } seq[static_cast<size_t>(i)] = static_cast<Ice::Short>(val); } - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindInt: @@ -1464,7 +1465,7 @@ IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALU } seq[static_cast<size_t>(i)] = static_cast<Ice::Int>(val); } - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindLong: @@ -1475,7 +1476,7 @@ IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALU { seq[static_cast<size_t>(i)] = getLong(RARRAY_AREF(arr, i)); } - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindFloat: @@ -1492,7 +1493,7 @@ IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALU assert(TYPE(v) == T_FLOAT); seq[static_cast<size_t>(i)] = static_cast<Ice::Float>(RFLOAT_VALUE(v)); } - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindDouble: @@ -1509,7 +1510,7 @@ IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALU assert(TYPE(v) == T_FLOAT); seq[static_cast<size_t>(i)] = RFLOAT_VALUE(v); } - os->write(&seq[0], &seq[0] + seq.size()); + os->write(seq); break; } case PrimitiveInfo::KindString: @@ -1520,11 +1521,18 @@ IceRuby::SequenceInfo::marshalPrimitiveSequence(const PrimitiveInfoPtr& pi, VALU { seq[static_cast<size_t>(i)] = getString(RARRAY_AREF(arr, i)); } + if(seq.empty()) + { + os->write(seq); + } + else + { #ifdef HAVE_RUBY_ENCODING_H - os->write(&seq[0], &seq[0] + seq.size(), false); // Bypass string conversion. + os->write(&seq[0], &seq[0] + seq.size(), false); // Bypass string conversion. #else - os->write(&seq[0], &seq[0] + seq.size(), true); + os->write(&seq[0], &seq[0] + seq.size(), true); #endif + } break; } } @@ -2353,7 +2361,7 @@ IceRuby::ProxyInfo::optionalFormat() const void IceRuby::ProxyInfo::marshal(VALUE p, Ice::OutputStream* os, ObjectMap*, bool optional) { - Ice::OutputStream::size_type sizePos; + Ice::OutputStream::size_type sizePos = 0; if(optional) { sizePos = os->startSize(); |