IDE version 1.6.12
Not sure where you are supposed to report this sort of thing, so here is as good as a place as any.
There appears to be a bug in the function size_t Print::print(const __FlashStringHelper *) such that it 'prints' only the first charter of the flash string.
I am actually calling the print function on an object of the derived class below.
There is no implementation of function print(...) in this class so I assume I am calling the print function in the base class.
class UDP is derived from class Stream and class stream is derived from class Print (all in Arduino\hardware\arduino\avr\cores\arduino)
My receiving windows application was actually receiving only the first character of the string.
But ss soon as I changed my arduino sketch code to use the size_t Print::write(const char *buffer, size_t size), my receiving Windows application received the full string.
class WiFiEspUDP : public UDP {
private:
uint8_t _sock; // socket ID for Wiz5100
uint16_t _port; // local port to listen on
uint16_t _remotePort;
char _remoteHost[30];
public:
WiFiEspUDP(); // Constructor
virtual uint8_t begin(uint16_t); // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use
virtual void stop(); // Finish with the UDP socket
// Sending UDP packets
// Start building up a packet to send to the remote host specific in ip and port
// Returns 1 if successful, 0 if there was a problem with the supplied IP address or port
virtual int beginPacket(IPAddress ip, uint16_t port);
// Start building up a packet to send to the remote host specific in host and port
// Returns 1 if successful, 0 if there was a problem resolving the hostname or port
virtual int beginPacket(const char *host, uint16_t port);
// Finish off this packet and send it
// Returns 1 if the packet was sent successfully, 0 if there was an error
virtual int endPacket();
// Write a single byte into the packet
virtual size_t write(uint8_t);
// Write size bytes from buffer into the packet
virtual size_t write(const uint8_t *buffer, size_t size);
using Print::write;
// Start processing the next available incoming packet
// Returns the size of the packet in bytes, or 0 if no packets are available
virtual int parsePacket();
// Number of bytes remaining in the current packet
virtual int available();
// Read a single byte from the current packet
virtual int read();
// Read up to len bytes from the current packet and place them into buffer
// Returns the number of bytes read, or 0 if none are available
virtual int read(unsigned char* buffer, size_t len);
// Read up to len characters from the current packet and place them into buffer
// Returns the number of characters read, or 0 if none are available
virtual int read(char* buffer, size_t len) { return read((unsigned char*)buffer, len); };
// Return the next byte from the current packet without moving on to the next byte
virtual int peek();
virtual void flush(); // Finish reading the current packet
// Return the IP address of the host who sent the current incoming packet
virtual IPAddress remoteIP();
// Return the port of the host who sent the current incoming packet
virtual uint16_t remotePort();
void getRemoteIP(IPAddress &IP);
uint16_t getRemotePort();
uint8_t getFirstSocket();
friend class WiFiEspServer;
};