Nebula CommunityФорум

Баги в Мангалоре и Небуле

#0
1:24, 4 июля 2007

Предлагаю здесь постить баги и косяки, найденные Вами в коде.
Так же рад был бы видеть здесь патчи (сгенерить их можно в тортойз-svn), либо описания того, как эти баги исправить.
Итак, поехали :)

#1
1:27, 4 июля 2007

Фикс бага с битыми мешами последней ревизии небулы (патч отключает оптимизацию):

Index: src/gfx2/nmesh2_main.cc
===================================================================
--- src/gfx2/nmesh2_main.cc  (revision 3283)
+++ src/gfx2/nmesh2_main.cc  (working copy)
@@ -13,7 +13,7 @@
 nNebulaClass(nMesh2, "nresource");
 
 #ifndef NGAME
-bool nMesh2::optimizeMesh = true;
+bool nMesh2::optimizeMesh = false;//true;      //  by Rageous, see http://nebuladevice.cubik.org/forum/index.php/topic,71.0.html
 #endif //NGAME
 
 //------------------------------------------------------------------------------
#2
1:30, 4 июля 2007

Фикс ошибок и варнингов компиляции под vs7.1 (неверный путь к либам, игнор некоторых либ, настройка дебажной информации):

Index: buildsys3/generators/makefile.py
===================================================================
--- buildsys3/generators/makefile.py  (revision 3283)
+++ buildsys3/generators/makefile.py  (working copy)
@@ -71,7 +71,7 @@
                 # calculate these once for the workspace
                 self.workspacePath = workspace.GetWorkspacePath(defaultLocation)
                 self.incDirStr = workspace.GetIncSearchDirsString(defaultLocation)
-                self.libDirStr = workspace.GetLibSearchDirsString('win32_vc_i386',
+                self.libDirStr = workspace.GetLibSearchDirsString('win32_vc71_i386',
                                                                   defaultLocation)
 
                 # make sure the workspace/projects directory exists
Index: buildsys3/generators/vstudio71.py
===================================================================
--- buildsys3/generators/vstudio71.py  (revision 3283)
+++ buildsys3/generators/vstudio71.py  (working copy)
@@ -38,21 +38,23 @@
                             Name="VCCLCompilerTool"
                             %(nebSymsStr)s
                             %(objectNameStr)s
-                            %(compileAsStr)s/>
+                            %(compileAsStr)s
+                          ProgramDataBaseFileName="$(OutDir)/d_$(ProjectName).pdb"/>
                     </FileConfiguration>
                     <FileConfiguration Name="Release|Win32">
                         <Tool
                             Name="VCCLCompilerTool"
                             %(nebSymsStr)s
                             %(objectNameStr)s
-                            %(compileAsStr)s/>
+                            %(compileAsStr)s
+                          ProgramDataBaseFileName="$(OutDir)/$(ProjectName).pdb"/>
                     </FileConfiguration>
                 </File>
 '''
 
 STR__NOCFG_SRC_FILE = '''\
                 <File
-                    RelativePath="%(relPath)s" />
+                    RelativePath="%(relPath)s"/>
 '''
 
 STR_DUMMY_SRC_FILE = '''\
@@ -156,12 +158,14 @@
 '''
 
 STR_PROJ_CONFIG_LINKER_TOOL_S2_DEBUG = '''\
+                IgnoreDefaultLibraryNames="libcd"
                 GenerateDebugInformation="TRUE"
                 LinkIncremental="2"
                 ProgramDatabaseFile="%s"
 '''
 
 STR_PROJ_CONFIG_LINKER_TOOL_S2_RELEASE = '''\
+                IgnoreDefaultLibraryNames="libc"
                 LinkIncremental="1"
                 OptimizeReferences="2"
                 EnableCOMDATFolding="2"
@@ -227,7 +231,7 @@
                 # calculate these once for the workspace
                 self.vcprojLocation = workspace.GetWorkspacePath(defaultLocation)
                 self.incDirStr = workspace.GetIncSearchDirsString(defaultLocation)
-                self.libDirStr = workspace.GetLibSearchDirsString('win32_vc_i386',
+                self.libDirStr = workspace.GetLibSearchDirsString('win32_vc71_i386',
                                                                   defaultLocation)
 
                 # make sure the workspace/projects directory exists

после применения не забудьте перегенерить солюшны и проекты!

#3
1:33, 4 июля 2007

Фикс ассерта в таблице анимаций, проверяющий наличие не той таблицы (вероятно кто-то жостко копи-пейстил):

Index: code/mangalore/physics/materialtable.cc
===================================================================
--- code/mangalore/physics/materialtable.cc  (revision 3283)
+++ code/mangalore/physics/materialtable.cc  (working copy)
@@ -75,7 +75,7 @@
 
     /* load bounce data */
     nXmlTable* bounceTable = materialDb.FindTable("bouncyness");
-    n_assert(0 != frictionTable);
+    n_assert(0 != bounceTable);
     n_assert(bounceTable->NumRows() == materialCount + 2);
     n_assert(bounceTable->NumColumns() == materialCount + 1);
     for (int row = 2; row < bounceTable->NumRows(); ++row)
#4
1:35, 4 июля 2007

Фикс хидера эйлеровых углов (исправляет ambiguous call к функции atan2):

Index: code/nebula2/inc/mathlib/eulerangles.h
===================================================================
--- code/nebula2/inc/mathlib/eulerangles.h  (revision 3283)
+++ code/nebula2/inc/mathlib/eulerangles.h  (working copy)
@@ -70,13 +70,13 @@
             if (sy > 16*FLT_EPSILON)
             {
                 this->x = (float) atan2(m.m[0][1], m.m[0][2]);
-                this->y = (float) atan2(sy, m.m[0][0]);
+                this->y = (float) atan2((float)sy, m.m[0][0]);
                 this->z = (float) atan2(m.m[1][0], -m.m[2][0]);
             }
             else
             {
                 this->x = (float) atan2(-m.m[1][2], m.m[1][1]);
-                this->y = (float) atan2(sy, m.m[0][0]);
+                this->y = (float) atan2((float)sy, m.m[0][0]);
                 this->z = 0;
             }
         }
@@ -86,13 +86,13 @@
             if (cy > 16*FLT_EPSILON)
             {
                 this->x = (float) atan2(m.m[2][1], m.m[2][2]);
-                this->y = (float) atan2(-m.m[2][0], cy);
+                this->y = (float) atan2(-m.m[2][0], (float)cy);
                 this->z = (float) atan2(m.m[1][0], m.m[0][0]);
             }
             else
             {
                 this->x = (float) atan2(-m.m[1][2], m.m[1][1]);
-                this->y = (float) atan2(-m.m[2][0], cy);
+                this->y = (float) atan2(-m.m[2][0], (float)cy);
                 this->z = 0;
             }
         }
#5
1:40, 4 июля 2007

Фикс преобразования строки ASCII <> UTF8 класса nString

ВНИМАНИЕ: патч платформо-зависимый и работает только под Win32 (под другие платформы код остается прежним)
но, согласитесь, это лучше, чем старый вариант, который работал только для немецкого языка ^_^

брать в качалке

#6
1:46, 4 июля 2007

Фикс UB в обработке параметров команды setmastervolume() аудио-сервера:

Index: code/nebula2/src/audio3/naudioserver3_cmds.cc
===================================================================
--- code/nebula2/src/audio3/naudioserver3_cmds.cc  (revision 3283)
+++ code/nebula2/src/audio3/naudioserver3_cmds.cc  (working copy)
@@ -65,7 +65,9 @@
 n_setmastervolume(void* slf, nCmd* cmd)
 {
     nAudioServer3* self = (nAudioServer3*) slf;
-    self->SetMasterVolume(nAudioServer3::StringToCategory(cmd->In()->GetS()), cmd->In()->GetF());
+  nString category = cmd->In()->GetS();
+  float volume = cmd->In()->GetF();
+    self->SetMasterVolume(nAudioServer3::StringToCategory(category.Get()), volume);
 }
 
 //------------------------------------------------------------------------------

ВНИМАНИЕ: возможна несовместимость порядка аргументов с существующими скриптами!
проверьте, чтобы в вызовах setmastervolume() из скриптов сначала шла категория, а затем громкость!

#7
1:50, 4 июля 2007

НЕ БАГ

фикс отключает проверку на совпадение кол-ва аргументов переданных из TCL скрипта с кол-вом аргументов сигнатуры, что позволяет делать дефолтные значения аргументов (в сигнатуре указываем все, а в обработке команды проверяем количество и подставляем дефолты по необходимости):

Index: code/nebula2/src/script/ntclserver_commands.cc
===================================================================
--- code/nebula2/src/script/ntclserver_commands.cc  (revision 3283)
+++ code/nebula2/src/script/ntclserver_commands.cc  (working copy)
@@ -239,14 +239,14 @@
 _getInArgs(Tcl_Interp* interp, nCmd* cmd, int objc, Tcl_Obj* const objv[])
 {
     long num_args = cmd->GetNumInArgs();
-    if (num_args != objc) {
-        return false;
-    }
+    //if (num_args != objc) {
+    //    return false;
+    //}
     // read out arguments
     int i;
     nArg* arg;
     cmd->Rewind();
-    for (i = 0; i < num_args; i++)
+    for (i = 0; i < objc; i++)
     {
         bool arg_ok = false;
         arg = cmd->In();
#8
13:49, 22 июля 2007

Фикс проблемы отсутствия теней при переходе на Февральский DXSDK:

Index: nd3d9shader_main.cc
===================================================================
--- nd3d9shader_main.cc  (revision 3283)
+++ nd3d9shader_main.cc  (working copy)
@@ -105,9 +105,9 @@
 
     ID3DXBuffer* errorBuffer = 0;
     #if N_D3D9_DEBUG
-        DWORD compileFlags = D3DXSHADER_DEBUG | D3DXSHADER_SKIPOPTIMIZATION;
+        DWORD compileFlags = D3DXSHADER_DEBUG | D3DXSHADER_SKIPOPTIMIZATION | D3DXSHADER_USE_LEGACY_D3DX9_31_DLL;
     #else
-        DWORD compileFlags = 0;
+        DWORD compileFlags = D3DXSHADER_USE_LEGACY_D3DX9_31_DLL;
     #endif
 
     // create include file handler
Прошло более 1 года
#9
14:42, 8 мар 2009

Rageous
Работаешь ли ты сейчас с Небулой?

Nebula CommunityФорум

Тема в архиве.