diff --git a/programs/winedbg/stabs.c b/programs/winedbg/stabs.c
index 204916740a10463c8d0b5d8e58efaebe8ba51bd6..0f6d2de2e0fd7cc2c5f8e842c522aeec0fc22e64 100644
--- a/programs/winedbg/stabs.c
+++ b/programs/winedbg/stabs.c
@@ -752,6 +752,31 @@ static int DEBUG_PTS_ReadTypedef(struct ParseTypedefData* ptd, const char* typen
                 }
             }
             break;
+        case 'R':
+            {
+                enum debug_type_basic basic = DT_BASIC_LAST;
+                int type, len, unk;
+                
+                PTS_ABORTIF(ptd, DEBUG_PTS_ReadNum(ptd, &type) == -1);
+                PTS_ABORTIF(ptd, *ptd->ptr++ != ';');	/* ';' */
+                PTS_ABORTIF(ptd, DEBUG_PTS_ReadNum(ptd, &len) == -1);
+                PTS_ABORTIF(ptd, *ptd->ptr++ != ';');	/* ';' */
+                PTS_ABORTIF(ptd, DEBUG_PTS_ReadNum(ptd, &unk) == -1);
+                PTS_ABORTIF(ptd, *ptd->ptr++ != ';');	/* ';' */
+
+                switch (type)
+                {
+                case 1: basic = DT_BASIC_FLOAT; break;
+                case 2: basic = DT_BASIC_DOUBLE; break;
+                case 3: basic = DT_BASIC_CMPLX_FLOAT; break;
+                case 4: basic = DT_BASIC_CMPLX_DOUBLE; break;
+                case 5: basic = DT_BASIC_CMPLX_LONGDOUBLE; break;
+                case 6: basic = DT_BASIC_LONGDOUBLE; break;
+                default: PTS_ABORTIF(ptd, 1);
+                }
+                PTS_ABORTIF(ptd, !(new_dt = DEBUG_GetBasicType(basic)));
+            }
+            break;
 	default:
 	    DEBUG_Printf(DBG_CHN_MESG, "Unknown type '%c'\n", ptd->ptr[-1]);
 	    return -1;