summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp/src/Ice/Object.cpp9
-rw-r--r--php/src/php5/Types.cpp12
-rw-r--r--php/src/php7/Types.cpp12
-rw-r--r--python/modules/IcePy/Types.cpp4
-rw-r--r--ruby/src/IceRuby/Types.cpp30
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();