A correct fix is to change

static const PCHAR Nv11Board = "NV11 (GeForce2) Board";
to
static const CHAR Nv11Board[] = "NV11 (GeForce2) Board";

Also in that case the "const" would start to make sense.



Am 17.03.2012 01:14, schrieb Samuel Serapión:
countof macro might be indicated

http://msdn.microsoft.com/en-us/library/ms175773%28v=vs.80%29.aspx

On Fri, Mar 16, 2012 at 12:27 PM, Aleksey Bragin<[email protected]>  wrote:
On 16.03.2012 17:49, victor martinez wrote:

Example 4. ReactOS project. Incorrect calculation of a string length ( vbe.c
57 )

static const PCHAR Nv11Board = "NV11 (GeForce2) Board";
static const PCHAR Nv11Chip = "Chip Rev B2";
static const PCHAR Nv11Vendor = "NVidia Corporation";
BOOLEAN
IsVesaBiosOk(...)
{
   ...
   if (!(strncmp(Vendor, Nv11Vendor, sizeof(Nv11Vendor)))&&
       !(strncmp(Product, Nv11Board, sizeof(Nv11Board)))&&
       !(strncmp(Revision, Nv11Chip, sizeof(Nv11Chip)))&&
       (OemRevision == 0x311))
   ...
}

Reason: The error here is this: the sizeof() operator, absolutely
inappropriate in this situation, is used to calculate string lengths. The
sizeof() operator actually calculates the pointer size instead of the number
of bytes in a string.

In this case Abragin said this is not a bug.

I said it is, but you left IRC too early. Rafal really confirmed by testing.

[17:31]<@rafalh>  abragin, vicmarcal sizeof returns 4 for me
[17:32]<@abragin>  then it should be defined as
[17:32]<@rafalh>  it would work for l    static const CHAR Nv11Board[]
[17:32]<@abragin>  static const CHAR Nv11Board[] = "NV11 (GeForce2) Board";
[17:33]<@abragin>  yeah


_______________________________________________
Ros-dev mailing list
[email protected]
http://www.reactos.org/mailman/listinfo/ros-dev
_______________________________________________
Ros-dev mailing list
[email protected]
http://www.reactos.org/mailman/listinfo/ros-dev


_______________________________________________
Ros-dev mailing list
[email protected]
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to