summaryrefslogtreecommitdiffstats
path: root/cpudetect.c
diff options
context:
space:
mode:
authorpl <pl@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-10-20 11:16:47 +0000
committerpl <pl@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-10-20 11:16:47 +0000
commita46e600619929beaf8dc27655b743eeb32683149 (patch)
treef32f418f6a16e986479c1afaf98e14614341b634 /cpudetect.c
parent746b9acfb6f970f687c5a2c422540f122572389b (diff)
downloadmpv-a46e600619929beaf8dc27655b743eeb32683149.tar.bz2
mpv-a46e600619929beaf8dc27655b743eeb32683149.tar.xz
returns a malloc()'ed string instead of an auto char[]
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2304 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'cpudetect.c')
-rw-r--r--cpudetect.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/cpudetect.c b/cpudetect.c
index ab16cc225b..b7916b18b7 100644
--- a/cpudetect.c
+++ b/cpudetect.c
@@ -93,9 +93,13 @@ void GetCpuCaps( CpuCaps *caps)
printf("CPU vendor name: %.4s%.4s%.4s max cpuid level: %d\n",&regs[1],&regs[3],&regs[2],regs[0]);
if (regs[0]>=0x00000001)
{
+ char *tmpstr;
+
do_cpuid(0x00000001, regs2);
- printf("CPU: %s\n",GetCpuFriendlyName(regs, regs2));
+ tmpstr=GetCpuFriendlyName(regs, regs2);
+ printf("CPU: %s\n",tmpstr);
+ free(tmpstr);
caps->cpuType=(regs2[0] >> 8)&0xf;
if(caps->cpuType==0xf){
@@ -153,17 +157,22 @@ void GetCpuCaps( CpuCaps *caps)
char *GetCpuFriendlyName(unsigned int regs[], unsigned int regs2[]){
#include "cputable.h" /* get cpuname and cpuvendors */
char vendor[17];
- char retname[255];
+ char *retname;
int i;
+ if (NULL==(retname=malloc(256))) {
+ printf("Error: GetCpuFriendlyName() not enough memory\n");
+ exit(1);
+ }
+
sprintf(vendor,"%.4s%.4s%.4s",&regs[1],&regs[3],&regs[2]);
for(i=0; i<MAX_VENDORS; i++){
if(!strcmp(cpuvendors[i].string,vendor)){
if(cpuname[i][CPUID_FAMILY][CPUID_MODEL]){
- sprintf(retname,"%s %s",cpuvendors[i].name,cpuname[i][CPUID_FAMILY][CPUID_MODEL]);
+ snprintf(retname,255,"%s %s",cpuvendors[i].name,cpuname[i][CPUID_FAMILY][CPUID_MODEL]);
} else {
- sprintf(retname,"unknown %s %d. Generation CPU",cpuvendors[i].name,CPUID_FAMILY);
+ snprintf(retname,255,"unknown %s %d. Generation CPU",cpuvendors[i].name,CPUID_FAMILY);
printf("unknown %s CPU:\n",cpuvendors[i].name);
printf("Vendor: %s\n",cpuvendors[i].string);
printf("Type: %d\n",CPUID_TYPE);