From 28acfd7d9d59b37f0b1deef25be999d281c1231b Mon Sep 17 00:00:00 2001
From: Christopher Andrews <chris@arduino.land>
Date: Mon, 4 Aug 2014 21:03:32 +1000
Subject: Added replacement stub for cstdlib atexit() funciton.

This is an empty stub to simply allow use of complex types with a
non global static lifetime. For more complex handling the function
'atexit' can be redefined in user code.

For more information see:

https://github.com/arduino/Arduino/pull/2229
https://github.com/arduino/Arduino/issues/1919
---
 cores/arduino/Arduino.h | 2 ++
 cores/arduino/main.cpp  | 3 +++
 2 files changed, 5 insertions(+)

(limited to 'cores/arduino')

diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h
index 425dfcb..8673ab8 100755
--- a/cores/arduino/Arduino.h
+++ b/cores/arduino/Arduino.h
@@ -115,6 +115,8 @@ typedef uint8_t byte;
 void init(void);
 void initVariant(void);
 
+int atexit(void (*func)()) __attribute__((weak));
+
 void pinMode(uint8_t, uint8_t);
 void digitalWrite(uint8_t, uint8_t);
 int digitalRead(uint8_t);
diff --git a/cores/arduino/main.cpp b/cores/arduino/main.cpp
index 091c365..a60980d 100644
--- a/cores/arduino/main.cpp
+++ b/cores/arduino/main.cpp
@@ -19,6 +19,9 @@
 
 #include <Arduino.h>
 
+//Declared weak in Arduino.h to allow user redefinitions.
+int atexit(void (*func)()) { return 0; }
+
 // Weak empty variant initialization function.
 // May be redefined by variant files.
 void initVariant() __attribute__((weak));
-- 
cgit v1.2.3-18-g5258