Tune caves
[oweals/minetest.git] / src / utility.h
index aa64c28bb601ceb3be158917d939c461c60a89ed..44a7629d553623b315ea42b51fcf01fa5e8ece95 100644 (file)
@@ -218,91 +218,91 @@ inline v3s16 readV3S16(u8 *data)
 
 inline void writeU8(std::ostream &os, u8 p)
 {
-       char buf[1];
+       char buf[1] = {0};
        writeU8((u8*)buf, p);
        os.write(buf, 1);
 }
 inline u8 readU8(std::istream &is)
 {
-       char buf[1];
+       char buf[1] = {0};
        is.read(buf, 1);
        return readU8((u8*)buf);
 }
 
 inline void writeU16(std::ostream &os, u16 p)
 {
-       char buf[2];
+       char buf[2] = {0};
        writeU16((u8*)buf, p);
        os.write(buf, 2);
 }
 inline u16 readU16(std::istream &is)
 {
-       char buf[2];
+       char buf[2] = {0};
        is.read(buf, 2);
        return readU16((u8*)buf);
 }
 
 inline void writeU32(std::ostream &os, u32 p)
 {
-       char buf[4];
+       char buf[4] = {0};
        writeU32((u8*)buf, p);
        os.write(buf, 4);
 }
 inline u32 readU32(std::istream &is)
 {
-       char buf[4];
+       char buf[4] = {0};
        is.read(buf, 4);
        return readU32((u8*)buf);
 }
 
 inline void writeS32(std::ostream &os, s32 p)
 {
-       char buf[4];
+       char buf[4] = {0};
        writeS32((u8*)buf, p);
        os.write(buf, 4);
 }
 inline s32 readS32(std::istream &is)
 {
-       char buf[4];
+       char buf[4] = {0};
        is.read(buf, 4);
        return readS32((u8*)buf);
 }
 
 inline void writeS16(std::ostream &os, s16 p)
 {
-       char buf[2];
+       char buf[2] = {0};
        writeS16((u8*)buf, p);
        os.write(buf, 2);
 }
 inline s16 readS16(std::istream &is)
 {
-       char buf[2];
+       char buf[2] = {0};
        is.read(buf, 2);
        return readS16((u8*)buf);
 }
 
 inline void writeS8(std::ostream &os, s8 p)
 {
-       char buf[1];
+       char buf[1] = {0};
        writeS8((u8*)buf, p);
        os.write(buf, 1);
 }
 inline s8 readS8(std::istream &is)
 {
-       char buf[1];
+       char buf[1] = {0};
        is.read(buf, 1);
        return readS8((u8*)buf);
 }
 
 inline void writeF1000(std::ostream &os, f32 p)
 {
-       char buf[4];
+       char buf[4] = {0};
        writeF1000((u8*)buf, p);
        os.write(buf, 4);
 }
 inline f32 readF1000(std::istream &is)
 {
-       char buf[4];
+       char buf[4] = {0};
        is.read(buf, 4);
        return readF1000((u8*)buf);
 }
@@ -322,39 +322,39 @@ inline v3f readV3F1000(std::istream &is)
 
 inline void writeV2F1000(std::ostream &os, v2f p)
 {
-       char buf[8];
+       char buf[8] = {0};
        writeV2F1000((u8*)buf, p);
        os.write(buf, 8);
 }
 inline v2f readV2F1000(std::istream &is)
 {
-       char buf[8];
+       char buf[8] = {0};
        is.read(buf, 8);
        return readV2F1000((u8*)buf);
 }
 
 inline void writeV2S16(std::ostream &os, v2s16 p)
 {
-       char buf[4];
+       char buf[4] = {0};
        writeV2S16((u8*)buf, p);
        os.write(buf, 4);
 }
 inline v2s16 readV2S16(std::istream &is)
 {
-       char buf[4];
+       char buf[4] = {0};
        is.read(buf, 4);
        return readV2S16((u8*)buf);
 }
 
 inline void writeV3S16(std::ostream &os, v3s16 p)
 {
-       char buf[6];
+       char buf[6] = {0};
        writeV3S16((u8*)buf, p);
        os.write(buf, 6);
 }
 inline v3s16 readV3S16(std::istream &is)
 {
-       char buf[6];
+       char buf[6] = {0};
        is.read(buf, 6);
        return readV3S16((u8*)buf);
 }
@@ -1049,22 +1049,25 @@ inline s32 mystoi(const std::string &s, s32 min, s32 max)
 // MSVC2010 includes it's own versions of these
 //#if !defined(_MSC_VER) || _MSC_VER < 1600
 
-inline s32 mystoi(std::string s)
+inline s32 mystoi(const std::string &s)
 {
        return atoi(s.c_str());
 }
 
-inline s32 mystoi(std::wstring s)
+inline s32 mystoi(const std::wstring &s)
 {
        return atoi(wide_to_narrow(s).c_str());
 }
 
-inline float mystof(std::string s)
+inline float mystof(const std::string &s)
 {
-       float f;
+       // This crap causes a segfault in certain cases on MinGW
+       /*float f;
        std::istringstream ss(s);
        ss>>f;
-       return f;
+       return f;*/
+       // This works in that case
+       return atof(s.c_str());
 }
 
 //#endif
@@ -1751,22 +1754,6 @@ std::string deSerializeJsonString(std::istream &is);
 
 //
 
-inline u32 time_to_daynight_ratio(u32 time_of_day)
-{
-       const s32 daylength = 16;
-       const s32 nightlength = 6;
-       const s32 daytimelength = 8;
-       s32 d = daylength;
-       s32 t = (((time_of_day)%24000)/(24000/d));
-       if(t < nightlength/2 || t >= d - nightlength/2)
-               //return 300;
-               return 350;
-       else if(t >= d/2 - daytimelength/2 && t < d/2 + daytimelength/2)
-               return 1000;
-       else
-               return 750;
-}
-
 // Random helper. Usually d=BS
 inline core::aabbox3d<f32> getNodeBox(v3s16 p, float d)
 {