On small targets there might be memory issues that lead to

failing on file allocation / opening during Stream creation.

The consequence was application continues running, but any printf
to the Serial object whose Stream was not properly created
would not show any error (and characters would not show either)

Let's add a check to properly inform user of the error.
pull/4259/head
Laurent MEUNIER 2017-05-02 17:18:24 +02:00
parent f2a648d9e6
commit 4ad4b2a2ef
1 changed files with 7 additions and 1 deletions

View File

@ -14,6 +14,8 @@
* limitations under the License.
*/
#include "platform/Stream.h"
#include "platform/mbed_error.h"
#include <errno.h>
namespace mbed {
@ -23,7 +25,11 @@ Stream::Stream(const char *name) : FileLike(name), _file(NULL) {
char buf[12]; /* :0x12345678 + null byte */
std::sprintf(buf, ":%p", this);
_file = std::fopen(buf, "w+");
if (_file) {
mbed_set_unbuffered_stream(_file);
} else {
error("Stream obj failure, errno=%d\r\n", errno);
}
}
Stream::~Stream() {