Skip to content

Commit 2f05283

Browse files
committed
correcting reading of signed values
1 parent d0bb3fb commit 2f05283

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

src/dds.net-connector-cpp.lib/connector/src/internal/src/variables/enc_dec_primitive.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,10 @@ short
135135
dds::net::connector::_internal::variables::
136136
EncDecPrimitive::readWord(BufferAddress buffer, int& offset)
137137
{
138-
int value = buffer[offset++];
139-
value = (value << 8) | buffer[offset++];
138+
short value = (unsigned char)buffer[offset++];
139+
value = (value << 8) | (unsigned char)buffer[offset++];
140140

141-
return (short)value;
141+
return value;
142142
}
143143

144144
void
@@ -155,10 +155,10 @@ long
155155
dds::net::connector::_internal::variables::
156156
EncDecPrimitive::readDWord(BufferAddress buffer, int& offset)
157157
{
158-
long value = buffer[offset++];
159-
value = (value << 8) | buffer[offset++];
160-
value = (value << 8) | buffer[offset++];
161-
value = (value << 8) | buffer[offset++];
158+
long value = (unsigned char)buffer[offset++];
159+
value = (value << 8) | (unsigned char)buffer[offset++];
160+
value = (value << 8) | (unsigned char)buffer[offset++];
161+
value = (value << 8) | (unsigned char)buffer[offset++];
162162

163163
return value;
164164
}
@@ -179,14 +179,14 @@ long long
179179
dds::net::connector::_internal::variables::
180180
EncDecPrimitive::readQWord(BufferAddress buffer, int& offset)
181181
{
182-
long long value = buffer[offset++];
183-
value = (value << 8) | buffer[offset++];
184-
value = (value << 8) | buffer[offset++];
185-
value = (value << 8) | buffer[offset++];
186-
value = (value << 8) | buffer[offset++];
187-
value = (value << 8) | buffer[offset++];
188-
value = (value << 8) | buffer[offset++];
189-
value = (value << 8) | buffer[offset++];
182+
long long value = (unsigned char)buffer[offset++];
183+
value = (value << 8) | (unsigned char)buffer[offset++];
184+
value = (value << 8) | (unsigned char)buffer[offset++];
185+
value = (value << 8) | (unsigned char)buffer[offset++];
186+
value = (value << 8) | (unsigned char)buffer[offset++];
187+
value = (value << 8) | (unsigned char)buffer[offset++];
188+
value = (value << 8) | (unsigned char)buffer[offset++];
189+
value = (value << 8) | (unsigned char)buffer[offset++];
190190

191191
return value;
192192
}

0 commit comments

Comments
 (0)