Skip to content

Commit 609760a

Browse files
author
ersts
committed
-Disabled renaming of the gray band name by getRasterBandStats()
-Added additional check to each ::draw function look ignore draw requests for bandno <= 0 git-svn-id: http://svn.osgeo.org/qgis/trunk@7966 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 7367d92 commit 609760a

File tree

1 file changed

+59
-9
lines changed

1 file changed

+59
-9
lines changed

src/core/raster/qgsrasterlayer.cpp

Lines changed: 59 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1420,6 +1420,12 @@ void QgsRasterLayer::draw (QPainter * theQPainter,
14201420
void QgsRasterLayer::drawSingleBandGray(QPainter * theQPainter, QgsRasterViewPort * theRasterViewPort, QgsMapToPixel * theQgsMapToPixel, int theBandNo)
14211421
{
14221422
QgsDebugMsg("QgsRasterLayer::drawSingleBandGray called for layer " + QString::number(theBandNo));
1423+
//Invalid band number, segfault prevention
1424+
if(0 >= theBandNo)
1425+
{
1426+
return;
1427+
}
1428+
14231429
GDALRasterBand *myGdalBand = mGdalDataset->GetRasterBand(theBandNo);
14241430
GDALDataType myDataType = myGdalBand->GetRasterDataType();
14251431
void *myGdalScanData = readData ( myGdalBand, theRasterViewPort );
@@ -1514,12 +1520,17 @@ void QgsRasterLayer::drawSingleBandGray(QPainter * theQPainter, QgsRasterViewPor
15141520
void QgsRasterLayer::drawSingleBandPseudoColor(QPainter * theQPainter,
15151521
QgsRasterViewPort * theRasterViewPort,
15161522
QgsMapToPixel * theQgsMapToPixel,
1517-
int theBandNoInt)
1523+
int theBandNo)
15181524
{
15191525
QgsDebugMsg("QgsRasterLayer::drawSingleBandPseudoColor called");
1520-
1521-
QgsRasterBandStats myRasterBandStats = getRasterBandStats(theBandNoInt);
1522-
GDALRasterBand *myGdalBand = mGdalDataset->GetRasterBand(theBandNoInt);
1526+
//Invalid band number, segfault prevention
1527+
if(0 >= theBandNo)
1528+
{
1529+
return;
1530+
}
1531+
1532+
QgsRasterBandStats myRasterBandStats = getRasterBandStats(theBandNo);
1533+
GDALRasterBand *myGdalBand = mGdalDataset->GetRasterBand(theBandNo);
15231534
GDALDataType myDataType = myGdalBand->GetRasterDataType();
15241535
void *myGdalScanData = readData ( myGdalBand, theRasterViewPort );
15251536

@@ -1616,7 +1627,12 @@ void QgsRasterLayer::drawPalettedSingleBandColor(QPainter * theQPainter, QgsRast
16161627
QgsMapToPixel * theQgsMapToPixel, int theBandNo)
16171628
{
16181629
QgsDebugMsg("QgsRasterLayer::drawPalettedSingleBandColor called");
1619-
1630+
//Invalid band number, segfault prevention
1631+
if(0 >= theBandNo)
1632+
{
1633+
return;
1634+
}
1635+
16201636
GDALRasterBand *myGdalBand = mGdalDataset->GetRasterBand(theBandNo);
16211637
GDALDataType myDataType = myGdalBand->GetRasterDataType();
16221638
void *myGdalScanData = readData ( myGdalBand, theRasterViewPort );
@@ -1696,7 +1712,12 @@ void QgsRasterLayer::drawPalettedSingleBandGray(QPainter * theQPainter, QgsRaste
16961712
QString const & theColorQString)
16971713
{
16981714
QgsDebugMsg("QgsRasterLayer::drawPalettedSingleBandGray called");
1699-
1715+
//Invalid band number, segfault prevention
1716+
if(0 >= theBandNo)
1717+
{
1718+
return;
1719+
}
1720+
17001721
QgsRasterBandStats myRasterBandStats = getRasterBandStats(theBandNo);
17011722
GDALRasterBand *myGdalBand = mGdalDataset->GetRasterBand(theBandNo);
17021723
GDALDataType myDataType = myGdalBand->GetRasterDataType();
@@ -1790,6 +1811,12 @@ void QgsRasterLayer::drawPalettedSingleBandPseudoColor(QPainter * theQPainter, Q
17901811
QString const & theColorQString)
17911812
{
17921813
QgsDebugMsg("QgsRasterLayer::drawPalettedSingleBandPseudoColor called");
1814+
//Invalid band number, segfault prevention
1815+
if(0 >= theBandNo)
1816+
{
1817+
return;
1818+
}
1819+
17931820
QgsRasterBandStats myRasterBandStats = getRasterBandStats(theBandNo);
17941821
GDALRasterBand *myGdalBand = mGdalDataset->GetRasterBand(theBandNo);
17951822
GDALDataType myDataType = myGdalBand->GetRasterDataType();
@@ -1913,7 +1940,12 @@ void QgsRasterLayer::drawPalettedMultiBandColor(QPainter * theQPainter, QgsRaste
19131940
QgsMapToPixel * theQgsMapToPixel, int theBandNo)
19141941
{
19151942
QgsDebugMsg("QgsRasterLayer::drawPalettedMultiBandColor called");
1916-
1943+
//Invalid band number, segfault prevention
1944+
if(0 >= theBandNo)
1945+
{
1946+
return;
1947+
}
1948+
19171949
GDALRasterBand *myGdalBand = mGdalDataset->GetRasterBand(theBandNo);
19181950
GDALDataType myDataType = myGdalBand->GetRasterDataType();
19191951
void *myGdalScanData = readData ( myGdalBand, theRasterViewPort );
@@ -2031,10 +2063,26 @@ void QgsRasterLayer::drawMultiBandColor(QPainter * theQPainter, QgsRasterViewPor
20312063
QgsMapToPixel * theQgsMapToPixel)
20322064
{
20332065
QgsDebugMsg("QgsRasterLayer::drawMultiBandColor called");
2034-
20352066
int myRedBandNo = getRasterBandNumber(mRedBandName);
2067+
//Invalid band number, segfault prevention
2068+
if(0 >= myRedBandNo)
2069+
{
2070+
return;
2071+
}
2072+
20362073
int myGreenBandNo = getRasterBandNumber(mGreenBandName);
2074+
//Invalid band number, segfault prevention
2075+
if(0 >= myGreenBandNo)
2076+
{
2077+
return;
2078+
}
2079+
20372080
int myBlueBandNo = getRasterBandNumber(mBlueBandName);
2081+
//Invalid band number, segfault prevention
2082+
if(0 >= myBlueBandNo)
2083+
{
2084+
return;
2085+
}
20382086
GDALRasterBand *myGdalRedBand = mGdalDataset->GetRasterBand(myRedBandNo);
20392087
GDALRasterBand *myGdalGreenBand = mGdalDataset->GetRasterBand(myGreenBandNo);
20402088
GDALRasterBand *myGdalBlueBand = mGdalDataset->GetRasterBand(myBlueBandNo);
@@ -2396,7 +2444,9 @@ const QgsRasterBandStats QgsRasterLayer::getRasterBandStats(int theBandNo)
23962444
}
23972445
else if (rasterLayerType==GRAY_OR_UNDEFINED)
23982446
{
2399-
myRasterBandStats.bandName = myColorerpretation;
2447+
//PJE 2008-01-14 This function should not be changing the band name,
2448+
//The format below is not the same as the constructor
2449+
//myRasterBandStats.bandName = myColorerpretation;
24002450
}
24012451
else //rasterLayerType is MULTIBAND
24022452
{

0 commit comments

Comments
 (0)