Make sure epicsInt8 is signed on all architectures
This commit is contained in:
@@ -16,6 +16,17 @@ should also be read to understand what has changed since earlier releases.
|
||||
|
||||
<!-- Insert new items immediately below here ... -->
|
||||
|
||||
### Make sure epicsInt8 is signed on all architectures
|
||||
|
||||
So far, `epicsInt8` and thus `DBF_CHAR` used to be unsigned on architectures
|
||||
where `char` is unsigned, for example on many PPC architectures.
|
||||
This had led to different behavior between architectures when converting
|
||||
`DBF_CHAR` to signed integer or to floating point types.
|
||||
|
||||
WARNING: This fix may change behavior of existing databases on on architectures
|
||||
with unsigned `char` (many PPC) when using input links to read from `CHAR`
|
||||
waveforms. Architectures with signed `char` (usually x86) are unaffected.
|
||||
|
||||
### Fix for `undefined` in configure/RELEASE files
|
||||
|
||||
Prevents `Use of uninitialized value` warnings from convertRelease.pl.
|
||||
|
||||
@@ -88,6 +88,7 @@ public:
|
||||
bool push ( const T & value );
|
||||
template < class T >
|
||||
unsigned push ( const T * pValue, unsigned nElem );
|
||||
unsigned push ( const char * pValue, unsigned nElem );
|
||||
unsigned push ( const epicsInt8 * pValue, unsigned nElem );
|
||||
unsigned push ( const epicsUInt8 * pValue, unsigned nElem );
|
||||
unsigned push ( const epicsOldString * pValue, unsigned nElem );
|
||||
@@ -208,6 +209,11 @@ inline unsigned comBuf :: push ( const epicsUInt8 *pValue, unsigned nElem )
|
||||
return copyInBytes ( pValue, nElem );
|
||||
}
|
||||
|
||||
inline unsigned comBuf :: push ( const char *pValue, unsigned nElem )
|
||||
{
|
||||
return copyInBytes ( pValue, nElem );
|
||||
}
|
||||
|
||||
inline unsigned comBuf :: push ( const epicsOldString * pValue, unsigned nElem )
|
||||
{
|
||||
unsigned index = this->nextWriteIndex;
|
||||
|
||||
@@ -46,7 +46,7 @@ void comQueRecv::clear ()
|
||||
this->nBytesPending = 0u;
|
||||
}
|
||||
|
||||
unsigned comQueRecv::copyOutBytes ( epicsInt8 *pBuf, unsigned nBytes )
|
||||
unsigned comQueRecv::copyOutBytes ( char *pBuf, unsigned nBytes )
|
||||
{
|
||||
unsigned totalBytes = 0u;
|
||||
do {
|
||||
|
||||
@@ -33,7 +33,7 @@ public:
|
||||
comQueRecv ( comBufMemoryManager & );
|
||||
~comQueRecv ();
|
||||
unsigned occupiedBytes () const;
|
||||
unsigned copyOutBytes ( epicsInt8 *pBuf, unsigned nBytes );
|
||||
unsigned copyOutBytes ( char *pBuf, unsigned nBytes );
|
||||
unsigned removeBytes ( unsigned nBytes );
|
||||
void pushLastComBufReceived ( comBuf & );
|
||||
void clear ();
|
||||
|
||||
@@ -41,7 +41,7 @@ typedef enum {
|
||||
* These are sufficient for all our current archs
|
||||
* @{
|
||||
*/
|
||||
typedef char epicsInt8;
|
||||
typedef signed char epicsInt8;
|
||||
typedef unsigned char epicsUInt8;
|
||||
typedef short epicsInt16;
|
||||
typedef unsigned short epicsUInt16;
|
||||
|
||||
Reference in New Issue
Block a user