Re: [Freeciv-Dev] (PR#39330) Re: (PR#39335) Re: Fix for PR#39330

2007-04-11 Thread Jason Short

http://bugs.freeciv.org/Ticket/Display.html?id=39330 >

On 4/11/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>
> http://bugs.freeciv.org/Ticket/Display.html?id=39330 >
>
> Jason Short wrote:
> > http://bugs.freeciv.org/Ticket/Display.html?id=39330 >
>
> >> Well, the patch can be easily be modified to send 'TILE_UNKNOWN'
> >> instead, for the case when the tile is seen by a city, but unknown.
> >> A *seen* tile is allowed to be *unknown* according to a comment in
> >> server/maphand.c, starting at line 810 on the SVN head revision, which I
> >> quote here:
> >
> > A tile can be known but not seen.  In this case the tile should be
> > marked as TILE_UNKNOWN in the player tile, NOT as TILE_KNOWN_FOGGED.
>
> No, a known but unseen tile *should* be marked as TILE_KNOWN_FOGGED. The
> code already does this, and my patch does not change this.

Very sorry, I mispoke.  I meant to say, a seen but unknown tile is
valid and should be marked as TILE_UNKNOWN.  This is what is
happening, is it not?

> Anyway, I modified the patch as I said I would, so that unknown but seen
> tiles are marked as TILE_UNKNOWN now. I tested it, and it works fine.
> The revised patch is attached to this message.

But we're still not fixing the core problem which is that an unknown
tile is being marked (in the plrtile) as KNOWN_FOGGED.

-jason



___
Freeciv-dev mailing list
[EMAIL PROTECTED]
https://mail.gna.org/listinfo/freeciv-dev


Re: [Freeciv-Dev] (PR#39330) Re: (PR#39335) Re: Fix for PR#39330

2007-04-11 Thread [EMAIL PROTECTED]

http://bugs.freeciv.org/Ticket/Display.html?id=39330 >

Jason Short wrote:
> http://bugs.freeciv.org/Ticket/Display.html?id=39330 >

>> Well, the patch can be easily be modified to send 'TILE_UNKNOWN'
>> instead, for the case when the tile is seen by a city, but unknown.
>> A *seen* tile is allowed to be *unknown* according to a comment in
>> server/maphand.c, starting at line 810 on the SVN head revision, which I
>> quote here:
> 
> A tile can be known but not seen.  In this case the tile should be
> marked as TILE_UNKNOWN in the player tile, NOT as TILE_KNOWN_FOGGED.

No, a known but unseen tile *should* be marked as TILE_KNOWN_FOGGED. The 
code already does this, and my patch does not change this.

Anyway, I modified the patch as I said I would, so that unknown but seen 
tiles are marked as TILE_UNKNOWN now. I tested it, and it works fine. 
The revised patch is attached to this message.

> What is a bit tricky is that map_get_seen can
> return TRUE for unknown tiles

That is precisely the case the patch deals with, since it wasn't being 
dealt with before.

 P.S. Send future reports to the bug tracker.
>> I *did* send the *report* to the tracker. Are you asking me to only send
>> future *patches* for open/new tickets to the tracker and not the list?
>> Do you want me to create a new ticket for each patch, like you
>> apparently did to respond to my earlier message?
> 
> You sent the report to the tracker then sent the patch to the list. 

Part of the reason for this was to make sure that I could actually post 
to the list, if needed. :-)

Eric



Index: server/maphand.c
===
--- server/maphand.c(revision 12916)
+++ server/maphand.c(working copy)
@@ -475,10 +475,10 @@
   && map_get_seen(ptile, pplayer, V_MAIN) == 0) {
   struct player_tile *plrtile = map_get_player_tile(ptile, pplayer);
 
-  info.known = TILE_KNOWN_FOGGED;
-  info.type = plrtile->terrain->index;
+  info.known = plrtile->terrain ? TILE_KNOWN_FOGGED : TILE_UNKNOWN;
+  info.type = plrtile->terrain ? plrtile->terrain->index : -1;
   for (spe = 0; spe < S_LAST; spe++) {
-   info.special[spe] = BV_ISSET(plrtile->special, spe);
+info.special[spe] = BV_ISSET(plrtile->special, spe);
   }
   info.resource = plrtile->resource ? plrtile->resource->index : -1;
   info.continent = ptile->continent;
___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


Re: [Freeciv-Dev] (PR#39330) Re: (PR#39335) Re: Fix for PR#39330

2007-04-11 Thread Jason Short

http://bugs.freeciv.org/Ticket/Display.html?id=39330 >

On 4/11/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>
> http://bugs.freeciv.org/Ticket/Display.html?id=39330 >
>
> Jason Short wrote:
> > http://bugs.freeciv.org/Ticket/Display.html?id=39335 >
>
> >>Attached to this message is a patch to fix the issue reported in
> >> PR#39330. Basically, the problem seems to be that cities can see unknown
> >> terrain, and this is considered acceptable and normal. But, in at least
> >> one place in the code that possibility is overlooked. In a player's view
> >> of a tile, the terrain ptr may be NULL (indicating it is unknown).
> >> Attempts to reference a member, such as 'type', of such a NULL ptr
> >> obviously results in a segfault.
> >
> > Good catch but the bug is deeper.  We do NEED to know the terrain type
> > here since the tile is being sent as TILE_KNOWN_FOGGED.  Can you find
> > a way to reproduce the problem and figure out why a "known" tile has
> > unknown terrain type?  That should not be possible.
>
> Well, the patch can be easily be modified to send 'TILE_UNKNOWN'
> instead, for the case when the tile is seen by a city, but unknown.
> A *seen* tile is allowed to be *unknown* according to a comment in
> server/maphand.c, starting at line 810 on the SVN head revision, which I
> quote here:

A tile can be known but not seen.  In this case the tile should be
marked as TILE_UNKNOWN in the player tile, NOT as TILE_KNOWN_FOGGED.
This isn't an error in the network code - it's an error in whatever
code marked the plrtile as TILE_KNOWN_FOGGED yet didn't set the
terrain.

The vision code *has* changed recently so there is a reasonable chance
of errors of this type.  If we're able to reproduce it I can probably
track it down next week, but if you can find the error yourself that
would naturally be even better.

> /
>Return whether the player can see the tile.  Seeing a tile means you have
>vision of it now (as opposed to knowing a tile which means you've seen it
>before).  Note that a tile can be seen but not known (currently this only
>happens when a city is founded with some unknown tiles in its radius); in
>this case the tile is unknown (but map_get_seen will still return TRUE).
> /
>
> Is this in dispute?

No, not in dispute.  What is a bit tricky is that map_get_seen can
return TRUE for unknown tiles: this is a low-level function that
should only be used in a few places.

> > > P.S. Send future reports to the bug tracker.
>
> I *did* send the *report* to the tracker. Are you asking me to only send
> future *patches* for open/new tickets to the tracker and not the list?
> Do you want me to create a new ticket for each patch, like you
> apparently did to respond to my earlier message?

You sent the report to the tracker then sent the patch to the list.  I
erronously made a new report which I merged into the old once when I
realized it already existed (hence the ugly subject line).  Simply
responding to the email from the bug tracker (with PR# in the subject)
is generally sufficient for any reply.

-jason



___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


[Freeciv-Dev] (PR#39330) Re: (PR#39335) Re: Fix for PR#39330

2007-04-11 Thread [EMAIL PROTECTED]

http://bugs.freeciv.org/Ticket/Display.html?id=39330 >

Jason Short wrote:
> http://bugs.freeciv.org/Ticket/Display.html?id=39335 >

>>Attached to this message is a patch to fix the issue reported in
>> PR#39330. Basically, the problem seems to be that cities can see unknown
>> terrain, and this is considered acceptable and normal. But, in at least
>> one place in the code that possibility is overlooked. In a player's view
>> of a tile, the terrain ptr may be NULL (indicating it is unknown).
>> Attempts to reference a member, such as 'type', of such a NULL ptr
>> obviously results in a segfault.
> 
> Good catch but the bug is deeper.  We do NEED to know the terrain type
> here since the tile is being sent as TILE_KNOWN_FOGGED.  Can you find
> a way to reproduce the problem and figure out why a "known" tile has
> unknown terrain type?  That should not be possible.

Well, the patch can be easily be modified to send 'TILE_UNKNOWN' 
instead, for the case when the tile is seen by a city, but unknown.
A *seen* tile is allowed to be *unknown* according to a comment in 
server/maphand.c, starting at line 810 on the SVN head revision, which I 
quote here:

/
   Return whether the player can see the tile.  Seeing a tile means you have
   vision of it now (as opposed to knowing a tile which means you've seen it
   before).  Note that a tile can be seen but not known (currently this only
   happens when a city is founded with some unknown tiles in its radius); in
   this case the tile is unknown (but map_get_seen will still return TRUE).
/


Is this in dispute?

> P.S. Send future reports to the bug tracker.

I *did* send the *report* to the tracker. Are you asking me to only send 
future *patches* for open/new tickets to the tracker and not the list? 
Do you want me to create a new ticket for each patch, like you 
apparently did to respond to my earlier message?

Eric



___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev