summaryrefslogtreecommitdiff
path: root/lang/sr/patches/patch-bg
blob: 5e177780b94ad77353833f340a6cbf5d306a9311 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$NetBSD: patch-bg,v 1.1 2005/03/12 10:22:08 is Exp $

--- rts/conv.c.orig	1999-07-28 22:42:24.000000000 +0200
+++ rts/conv.c
@@ -219,11 +219,30 @@ sr_ptrval (locn, s)
 char *locn;
 String *s;
 {
+    unsigned long ul;
+    char c[2], d[2];
+    int t;
+
     sr_check_stk (CUR_STACK);
-    if (s->length == 8 && strncmp (DATA (s), "==null==", 8) == 0)
-	return 0;
-    else
-	return (Ptr) sr_intval (locn, s);
+
+    if (s->length == 8 && strncmp (DATA (s), "==null==", 8) == 0) {
+	return (Ptr)0;
+    }
+    /* implicit else */
+
+    c[0] = '\0';
+    DATA (s) [s->length] = '\0';
+
+    t = sscanf (DATA (s), "%lx%1s%1s", &ul, c, d);
+
+    if ( t != 1 &&
+	(t != 2 || (c[0] != 'x' && c[0] != 'X'))) {
+
+        sr_runerr (locn, E_PCNV, s);
+    }
+
+    return (Ptr) ul;
+
 }