[OpenBIOS] [commit] r1271 - trunk/openbios-devel/forth/system

repository service svn at openbios.org
Mon Mar 3 18:00:20 CET 2014


Author: mcayland
Date: Mon Mar  3 18:00:20 2014
New Revision: 1271
URL: http://tracker.coreboot.org/trac/openbios/changeset/1271

Log:
ciface.fs: alter nextprop to preserve output buffer unless an error occurs

Previously nextprop would always write a 0 length string to the output buffer
before calling the underlying property words, with the assumption that this
would be the default return value in the case of an error.

MorphOS breaks this assumption by specifying buf == prev when calling nextprop
which caused the prev value to be overwritten before it could be used, and so
nextprop would always return an (error) exit code of -1.

Fix nextprop so that the 0 length string is only written into the output buffer
when an error exit code of -1 or 0 is returned, as per the IEEE1275
specification. As reported by BALATON Zoltan <balaton at eik.bme.hu>.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>

Modified:
   trunk/openbios-devel/forth/system/ciface.fs

Modified: trunk/openbios-devel/forth/system/ciface.fs
==============================================================================
--- trunk/openbios-devel/forth/system/ciface.fs	Mon Mar  3 00:18:34 2014	(r1270)
+++ trunk/openbios-devel/forth/system/ciface.fs	Mon Mar  3 18:00:20 2014	(r1271)
@@ -108,12 +108,13 @@
   dup 0= if 0 else dup cstrlen then
 
   ( buf prev prev_len )
-  0 3 pick c!
   
   \ verify that prev exists (overkill...)
   dup if
     2dup r@ get-package-property if
-      r> 2drop 2drop -1 exit
+      r> 2drop drop
+      0 swap c!
+      -1 exit
     else
       2drop
     then
@@ -126,7 +127,8 @@
     dup 1+ -rot ci-strcpy drop 1
   else
     ( buf )
-    drop 0
+    0 swap c!
+    0
   then
 ;
 



More information about the OpenBIOS mailing list