Skip to content

Commit 9d57413

Browse files
sapiersapier
sapier
authored and
sapier
committedJun 15, 2014
Minor stability improvements in block emerge handling
1 parent 6c98fd6 commit 9d57413

File tree

2 files changed

+18
-17
lines changed

2 files changed

+18
-17
lines changed
 

‎src/map.cpp

+16-15
Original file line numberDiff line numberDiff line change
@@ -2255,7 +2255,7 @@ bool ServerMap::initBlockMake(BlockMakeData *data, v3s16 blockpos)
22552255
//TimeTaker timer("initBlockMake() initialEmerge");
22562256
data->vmanip->initialEmerge(bigarea_blocks_min, bigarea_blocks_max, false);
22572257
}
2258-
2258+
22592259
// Ensure none of the blocks to be generated were marked as containing CONTENT_IGNORE
22602260
/* for (s16 z = blockpos_min.Z; z <= blockpos_max.Z; z++) {
22612261
for (s16 y = blockpos_min.Y; y <= blockpos_max.Y; y++) {
@@ -2275,7 +2275,7 @@ bool ServerMap::initBlockMake(BlockMakeData *data, v3s16 blockpos)
22752275
return true;
22762276
}
22772277

2278-
MapBlock* ServerMap::finishBlockMake(BlockMakeData *data,
2278+
void ServerMap::finishBlockMake(BlockMakeData *data,
22792279
std::map<v3s16, MapBlock*> &changed_blocks)
22802280
{
22812281
v3s16 blockpos_min = data->blockpos_min;
@@ -2369,7 +2369,9 @@ MapBlock* ServerMap::finishBlockMake(BlockMakeData *data,
23692369
y<=blockpos_max.Y+extra_borders.Y; y++)
23702370
{
23712371
v3s16 p(x, y, z);
2372-
getBlockNoCreateNoEx(p)->setLightingExpired(false);
2372+
MapBlock * block = getBlockNoCreateNoEx(p);
2373+
if (block != NULL)
2374+
block->setLightingExpired(false);
23732375
}
23742376

23752377
#if 0
@@ -2385,7 +2387,8 @@ MapBlock* ServerMap::finishBlockMake(BlockMakeData *data,
23852387
i != changed_blocks.end(); ++i)
23862388
{
23872389
MapBlock *block = i->second;
2388-
assert(block);
2390+
if (!block)
2391+
continue;
23892392
/*
23902393
Update day/night difference cache of the MapBlocks
23912394
*/
@@ -2406,7 +2409,8 @@ MapBlock* ServerMap::finishBlockMake(BlockMakeData *data,
24062409
{
24072410
v3s16 p(x, y, z);
24082411
MapBlock *block = getBlockNoCreateNoEx(p);
2409-
assert(block);
2412+
if (!block)
2413+
continue;
24102414
block->setGenerated(true);
24112415
}
24122416

@@ -2419,8 +2423,8 @@ MapBlock* ServerMap::finishBlockMake(BlockMakeData *data,
24192423
/*infostream<<"finishBlockMake() done for ("<<blockpos_requested.X
24202424
<<","<<blockpos_requested.Y<<","
24212425
<<blockpos_requested.Z<<")"<<std::endl;*/
2422-
2423-
2426+
2427+
24242428
#if 0
24252429
if(enable_mapgen_debug_info)
24262430
{
@@ -2444,10 +2448,7 @@ MapBlock* ServerMap::finishBlockMake(BlockMakeData *data,
24442448
}
24452449
#endif
24462450

2447-
MapBlock *block = getBlockNoCreateNoEx(blockpos_requested);
2448-
assert(block);
2449-
2450-
return block;
2451+
getBlockNoCreateNoEx(blockpos_requested);
24512452
}
24522453

24532454
ServerMapSector * ServerMap::createSector(v2s16 p2d)
@@ -3068,7 +3069,7 @@ void ServerMap::loadMapMeta()
30683069
break;
30693070
params.parseConfigLine(line);
30703071
}
3071-
3072+
30723073
m_emerge->loadParamsFromSettings(&params);
30733074

30743075
verbosestream<<"ServerMap::loadMapMeta(): seed="
@@ -3710,7 +3711,7 @@ void ManualMapVoxelManipulator::initialEmerge(v3s16 blockpos_min,
37103711

37113712
if(block_data_inexistent)
37123713
{
3713-
3714+
37143715
if (load_if_inexistent) {
37153716
ServerMap *svrmap = (ServerMap *)m_map;
37163717
block = svrmap->emergeBlock(p, false);
@@ -3720,7 +3721,7 @@ void ManualMapVoxelManipulator::initialEmerge(v3s16 blockpos_min,
37203721
block->copyTo(*this);
37213722
} else {
37223723
flags |= VMANIP_BLOCK_DATA_INEXIST;
3723-
3724+
37243725
/*
37253726
Mark area inexistent
37263727
*/
@@ -3760,7 +3761,7 @@ void ManualMapVoxelManipulator::blitBackAll(
37603761
v3s16 p = i->first;
37613762
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
37623763
bool existed = !(i->second & VMANIP_BLOCK_DATA_INEXIST);
3763-
if(existed == false)
3764+
if((existed == false) || (block == NULL))
37643765
{
37653766
continue;
37663767
}

‎src/map.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ class ServerMap : public Map
401401
Blocks are generated by using these and makeBlock().
402402
*/
403403
bool initBlockMake(BlockMakeData *data, v3s16 blockpos);
404-
MapBlock *finishBlockMake(BlockMakeData *data,
404+
void finishBlockMake(BlockMakeData *data,
405405
std::map<v3s16, MapBlock*> &changed_blocks);
406406

407407
/*
@@ -419,7 +419,7 @@ class ServerMap : public Map
419419
420420
*/
421421
MapBlock * emergeBlock(v3s16 p, bool create_blank=true);
422-
422+
423423
/*
424424
Try to get a block.
425425
If it does not exist in memory, add it to the emerge queue.

0 commit comments

Comments
 (0)
Please sign in to comment.