#1044 closed bug (fixed)
crash when creating new GRASS location on Windows
Reported by: | lubaby | Owned by: | telwertowski |
---|---|---|---|
Priority: | critical: causes crash or data corruption | Milestone: | |
Component: | GRASS | Version: | Trunk |
Keywords: | Cc: | jef@… | |
Must Fix for Release: | Yes | Platform: | All |
Platform Version: | Awaiting user input: | no |
Description
QGIS (Windows version only) crashes if you are trying to create location with almost same name as exist (the only difference is character case).
Steps to reproduce:
- Create new GRASS location with name "bug"
- Now try to create another GRASS location with name "Bug"
- After last wizard step the QGIS crashes
The problem is that Linux is case sensitive (bug and Bug are two different strings) but in Windows there is impossible to create two files named "bug" and "Bug".
Change History (17)
comment:1 by , 15 years ago
comment:2 by , 15 years ago
Milestone: | Version 0.9.2 → Version 1.0 |
---|---|
Type: | bug → enhancement |
comment:3 by , 15 years ago
Type: | enhancement → defect |
---|
follow-up: 5 comment:4 by , 15 years ago
Summary: | Crash when creating new GRASS location → crash when creating new GRASS location on Windows |
---|---|
Type: | defect → bug |
Version: | HEAD → 0.11.0 |
Bug confirmed under WINE 1.0.0 configured to emulate Win XP, on amd64 Debian testing using Marco's "QGIS 0.11.0 for Windows pre-release testing installer".
Indeed it seems the culprit is Windows is not case-sensitive as GNU/Linux is.
comment:5 by , 15 years ago
Cc: | added |
---|
Replying to msieczka:
Bug confirmed under WINE 1.0.0 configured to emulate Win XP, on amd64 Debian testing using Marco's "QGIS 0.11.0 for Windows pre-release testing installer".
Indeed it seems the culprit is Windows is not case-sensitive as GNU/Linux is.
Absolutely! Windows is NOT case sensitive. As I said two months ago, there would be a simple solution: introduce a *name check* function to prevent this error, checking if the location's name (that is the folder) already exixts and, if yes, telling that the location *Bug* already exists and reprompt for a new name.
I donn't know if that should be done in GRASS code; actually I think that we could do that in one of the src\qgis-dev\src\plugins\grass\ cpp files
Jurgen?
comment:6 by , 15 years ago
Owner: | changed from | to
---|
This also happens on a Mac.
There's already a duplicate name check in qgsgrassnewmapset.cpp. It needs to be made case insensitive for Mac and Win.
comment:8 by , 15 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Replying to telwertowski:
Fixed by r9287.
I think there is a problem with r9287. I'm running qt4.4 and I get this compile error:
Scanning dependencies of target grassplugin [ 87%] Building CXX object src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o In file included from /home/bobm/src/gis/qgis_svn/src/plugins/grass/qgsgrassplugin.cpp:18: /home/bobm/src/gis/qgis_svn/src/plugins/grass/qgsgrassplugin.h:99: error: ‘QPainter’ has not been declared /home/bobm/src/gis/qgis_svn/src/plugins/grass/qgsgrassplugin.cpp:523: error: prototype for ‘void QgsGrassPlugin::postRender(QPainter*)’ does not match any in class ‘QgsGrassPlugin’ /home/bobm/src/gis/qgis_svn/src/plugins/grass/qgsgrassplugin.h:99: error: candidate is: void QgsGrassPlugin::postRender(int*) make[2]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o] Error 1 make[1]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/all] Error 2 make: *** [all] Error 2
The complete compiler output can be found here: http://rafb.net/p/SAY4QJ37.html
comment:9 by , 15 years ago
Version: | 0.11.0 → HEAD |
---|
And I get a foloowing error in r9290:
[ 91%] Generating ui_qgsprojectionselectorbase.h /home/shoofi/src/straight/qgis-trunk/src/ui/qgsprojectionselectorbase.ui: An invalid icon property 'windowIcon' was encountered. Scanning dependencies of target grassplugin [ 92%] Building CXX object src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o In file included from /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassplugin.cpp:18: /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassplugin.h:99: error: 'QPainter' has not been declared /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassplugin.cpp:523: error: prototype for 'void QgsGrassPlugin::postRender(QPainter*)' does not match any in class 'QgsGrassPlugin' /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassplugin.h:99: error: candidate is: void QgsGrassPlugin::postRender(int*) make[2]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassplugin.o] Error 1 make[1]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/all] Error 2 make: *** [all] Error 2
comment:10 by , 15 years ago
Platform: | Windows → All |
---|
comment:11 by , 15 years ago
Status: | reopened → new |
---|
comment:12 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:13 by , 15 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Yet another error, in r9291:
[ 92%] Building CXX object src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassmodel.o [ 93%] Building CXX object src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassmapcalc.o /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'virtual void QgsGrassMapcalc::mousePressEvent(QMouseEvent*)': /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:278: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:278: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:288: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:288: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'virtual QStringList QgsGrassMapcalc::checkRegion()': /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:494: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:494: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'virtual bool QgsGrassMapcalc::inputRegion(Cell_head*, bool)': /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:549: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:549: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'void QgsGrassMapcalc::growCanvas(int, int, int, int)': /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:957: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:957: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:965: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:965: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'void QgsGrassMapcalc::save()': /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1124: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1124: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1175: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1175: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp: In member function 'bool QgsGrassMapcalcConnector::tryConnectEnd(int)': /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1990: error: must #include <typeinfo> before using typeid /home/shoofi/src/straight/qgis-trunk/src/plugins/grass/qgsgrassmapcalc.cpp:1990: error: must #include <typeinfo> before using typeid make[2]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/qgsgrassmapcalc.o] Error 1 make[1]: *** [src/plugins/grass/CMakeFiles/grassplugin.dir/all] Error 2 make: *** [all] Error 2
comment:14 by , 15 years ago
Status: | reopened → new |
---|
Add the line
#include <typeinfo>
after #include <math.h> and try compiling again. I will wait for any other issues before updating svn.
What OS are you using? I will also add a comment that this file is needed for a particular OS so it doesn't get removed again.
comment:15 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
The last issue is fixed by gcc 4.3 compatibility changes in r9292.
I think that the only possible solution is to introduce a *name check* to prevent this error, telling that the location *Bug* already exists and repromp for a new name.
Marco